Android开发 客户端与C#服务器的连接+OkHttp+SQL Server_安卓请求 c#服务器

48 阅读3分钟

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;
    }
# 文末

**不管怎么样,不论是什么样的大小面试,要想不被面试官虐的不要不要的,只有刷爆面试题题做好全面的准备,当然除了这个还需要在平时把自己的基础打扎实,这样不论面试官怎么样一个知识点里往死里凿,你也能应付如流啊~**

小编将自己6年以来的**面试经验和学习笔记**都整理成了一个**937页的PDF,**以及我学习进阶过程中看过的一些优质视频教程。**上传在我的GitHub中:[Android架构视频+BATJ面试专题PDF+学习笔记](https://github.com/a120464/Android-P7/blob/master/Android%E5%BC%80%E5%8F%91%E4%B8%8D%E4%BC%9A%E8%BF%99%E4%BA%9B%EF%BC%9F%E5%A6%82%E4%BD%95%E9%9D%A2%E8%AF%95%E6%8B%BF%E9%AB%98%E8%96%AA%EF%BC%81.md)**请君自取,无偿分享!

![](https://p3-xtjj-sign.byteimg.com/tos-cn-i-73owjymdk6/284d12aa033b4f0b969cf29ba572c8f2~tplv-73owjymdk6-jj-mark-v1:0:0:0:0:5o6Y6YeR5oqA5pyv56S-5Yy6IEAg55So5oi3MDY4Mzc0MTQxMzQ0:q75.awebp?rk3s=f64ab15b&x-expires=1771890998&x-signature=u4NzBh2vhR93SkviE3ahsyfpLOE%3D)


其实看到身边很多朋友抱怨自己的工资很低,包括笔者也是一样的,其原因是在面试过程中没有给面试官一个很好的答案。所以笔者会持续更新面试过程中遇到的问题,也希望大家和笔者一起进步,一起学习。