zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

Android开发 客户端与C#服务器的连接+OkHttp+SQL Server

2023-09-14 09:14:02 时间

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下载
      下载源代码