Android开发 客户端与C#服务器的连接+OkHttp+SQL Server
1. 我在公司遇到要求开发新客户,需要做项目,我该怎么做开发的
2. 准备工作:找到自己带有源代码(客户端)来写开发,跟同事写C#服务器,要多多交流
3.发送服务器保存到数据库(SQL Server)可以查看
4. 我的源代码这是最重要的,暂时只需要开发新客户,这源代码:客户端与服务器的连接,大多数是发送/更新/获取服务器数据库,尤其是用json
5.我的源代码↓↓↓有下载链接
1.实现登录如下,输入用户名和密码二个数据发送iis服务器保存到数据库,注意:不是登录,就是因为我想把二个数据发送iis服务器保存数据库,我暂时没改代码,你可以自己改代码哦
2.做的项目如下:
3.activity_main.xml,布局代码如下:
......
<EditText
android:id="@+id/et_user_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入用户名"
android:textSize="15dp" />
<EditText
android:id="@+id/et_password"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="请输入密码"
android:textSize="15dp" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:onClick="btn"
android:text="连接IIS服务器"/>
......
4.AppConfig.java,客户端的本地ip地址,代码如下:
......
public static final String BASE_URL = "http://xxx.xxx.x.xxx:xxxx/Handler1.ashx/";
......
5.在app的build.gradle中需要添加依赖包,代码如下:
//*************************Retrofit*****************************//
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'com.squareup.retrofit2:adapter-rxjava2:2.3.0'
//*************************OkHttp*****************************//
compile 'com.squareup.okhttp3:okhttp:3.4.1'
compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'
//*************************RxJava*****************************//
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.1.7'
compile 'com.jakewharton.rxrelay2:rxrelay:2.0.0'
6.MainActivity.java,代码如下,注意:不是登录(login),就是把username和password二个数据发送iis服务器保存数据库而已,我暂时没改代码,你可以自己改代码哦
public void btn(View view){
final String username = userNameEt.getText().toString().trim();
final String password = passwordEt.getText().toString().trim();
RetrofitUtil.provideRetrofit(OkHttpUtil.instance().getClient(), AppConfig.Url.BASE_URL)
.create(DataService.class).login(username, password)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<HttpResponse<TicketAuth>>() //Observer:观察者
{
@Override
public void onSubscribe(Disposable d) {//Disposable是一个接口,onSubscribe:订阅
//这是请求服务器等回应的时候提示:正在加载中
// dialog = DialogUtil.createLoadingDefault(LoginActivity.this, "正在加载");
// dialog.show();
}
@Override
public void onNext(HttpResponse<TicketAuth> resData)
{
//请求服务器等到回应,回应了可以获取服务器的数据库
// dialog.dismiss();
if (resData.getCode() == AppConfig.RESPONSE_OK) {
final TicketAuth auth = resData.getData();
auth.setUsername(username);
auth.setPassword(password);
}
}
@Override
public void onError(Throwable e) {//Throwable:可抛出
//请求服务器回应,回应不了会提示:连接服务器失败
// dialog.dismiss();
e.printStackTrace();
}
@Override
public void onComplete() {
}
});
}
......
7.RetrofitUtil.java,客户端连接服务器,代码如下:
......
public static Retrofit provideRetrofit(OkHttpClient client,String baseUrl) {
Retrofit retrofit = new Retrofit.Builder()//retrofit:改造
.client(client)
.baseUrl(baseUrl)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create()) // 添加Rx适配器
.addConverterFactory(GsonConverterFactory.create()) // 添加Gson转换器
.build();
return retrofit;
}
......
8.DataService.java,大多数是客户端发送/更新/获取服务器数据库,代码如下:
......
@GET("api/account/Login?")
Observable<HttpResponse<TicketAuth>> login(@Query("username") String username, @Query("password") String password);
@GET("api/account/tokenTest?")
Observable<HttpResponse<Object>> TokenTest();
@GET("api/Account/GetRCToken?")
Observable<HttpResponse<JSONObject>> getRCToken(@Query("userid") String userId);
@GET("Admin/Page/Basic/GetList?")
Observable<HttpResponse<Object>> getList(@Query("depIds") String depIds);
@POST("api/basic/test2")
// Observable<HttpResponse<Object>> Test();
Observable<HttpResponse<Object>> Test2(@Query("start") int start, @Query("limit") int limit, @Query("orderCulum") String orderCulum, @Query("orderType") String orderType, @Query("where") String where);
@GET("api/common/getunit")
Observable<HttpResponse<Object>> GetUnit(@Query("parentCode") String parentCode, @Query("codeScope") String codeScope);
@GET("api/account/getuserunit")
Observable<HttpResponse<Object>> GetUserUnit(@Query("userid") String userid);
......
8.1 常用的是json,公司开发也需要的,比如如下
{
"persons":[
{
"address":"上海黄浦区",
"id":1001,
"name":"jack"
},
{
"addrss":"上海闵行区",
"id":1002,
"name":"rose"
},
{
"address":"上海黄浦区",
"id":1003,
"name":"mick"
}
]
}
9.VS2010代码如下,C#得到客户端的发送(username和password)
......
string username = context.Request["username"];
string password = context.Request["password"];
......
10.发布到IIS服务器如下:
11.保存到SQL Server 2014数据库如下:
11.1 在android输入用户名和密码二个数据,点击“连接IIS服务器”
11.2 发送(连接)服务器保存到数据库
12.源代码zip下载
下载源代码
相关文章
- [Android Pro] svn实例
- [Android Pro] android 禁用和开启四大组件的方法(setComponentEnabledSetting )
- Failed to fetch URl https://dl-ssl.google.com/android/repository/addo Android SDK更新以及ADT更新出现问题的解决办法
- Eclipse 项目以非gradle方式导入Android Studio
- Android API之android.view.View.MeasureSpec
- 《android开发艺术探索》读书笔记(八)--WindowManager
- 《Android源码设计模式》--抽象工厂模式
- 《android开发艺术探索》读书笔记(十五)--Android性能优化
- Android修行手册-看看Button都有哪些属性?
- android java 堆栈_Android下打印调试堆栈方法
- android高手进阶教程
- Android【报错】android.content.ActivityNotFoundException:activity in yourAndroidManifest.?
- Android设置按键为圆形框
- Android 11.0 系统Settings去掉开发者模式功能
- Android 11.0 SystemUI 下拉状态栏QSTileView的字体大小不随系统字体改变而改变时字体大小
- Android 12.0 修改系统签名文件类型test-keys为release-keys
- 【Android Gradle 插件】组件化中的 Gradle 构建脚本实现 ⑤ ( 优化 Gradle 构建脚本 | 构建脚本结构 | 闭包定义及用法 | 依赖配置 | android 块配置 )
- 【错误记录】Android Studio 编译报错 ( Module was compiled with an incompatible version of Kotlin. The binary )
- 【错误记录】Android Studio 编译时 lint 检查报错 ( WARNING: DSL element ‘android.dataBinding.enabled‘ is obsolet )
- Android 开源项目android-open-project解析之(三) ScrollView,TimeView,TipView,FlipView
- 如何解决Android Studio的import android.support.v7.widget.RecyclerView的RecyclerView标红问题