1.之前学习了两种基于http访问服务器的方法,一种是HttpURLConenction,一种是Apache下的HttpClient,说实话,这两种方法操作起来都不是很简单明了,所以当前首选的网络通信库是由Square公司开发的OKHttp

2.OKHttp的使用方法

2-1:导入(在gradle的依赖项中进行导入)

implementation 'com.squareup.okhttp3:okhttp:3.2.0'

dependencies {    implementation fileTree(dir: 'libs', include: ['*.jar'])    implementation 'com.android.support:appcompat-v7:27.1.1'    implementation 'com.android.support.constraint:constraint-layout:1.1.3'    testImplementation 'junit:junit:4.12'    androidTestImplementation 'com.android.support.test:runner:1.0.2'    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'    implementation 'com.squareup.okhttp3:okhttp:3.2.0'}

2-2:注意在AndroidManifest中添加网络许可

2-3:get方法(构造请求+发送请求+处理反馈信息  )

注:子线程中实现该操作

private void doGet(String s) {        final String getUrl=urlAdress+method+s;//        new Thread(new Runnable() {            @Override            public void run() {                Request request=new Request.Builder().url(getUrl).build();//构造请求                //开始发送请求                try {                    //实现同步请求                    Response response=client.newCall(request).execute();//发送请求,得到反馈信息Response                    if(response.isSuccessful()){                        Log.d("MSG",response.body().string());//打印反馈信息                    }else{                        Log.d("test","get failed");//服务器返回码不正确,发送信息失败                    }                } catch (IOException e) {                    e.printStackTrace();                }            }        }).start();    }}

2-4:post方法

(post方法的关键是构建键值对(以key-value的形式),相较于get方法而言,所有的信息是以流的形式进行发送请求参数,所以这里封装了FormBody类进行请求的书写,在FormBody中构建键值对)

private void doPost(final String s) {        new Thread(new Runnable() {            @Override            public void run() {                //通过构造请求参数                FormBody formBody=new FormBody.Builder().add("***","***").build();//构建好了参数(key value键值对)                                //构造完整请求                Request request=new Request.Builder().url(urlAdress+method).post(formBody).build();//向服务                //采用异步响应                    //发送信息                client.newCall(request).enqueue(new Callback() {                    @Override                    public void onFailure(Call call, IOException e) {                        Log.d("test","post failed");                    }                    @Override                    public void onResponse(Call call, Response response) throws IOException {                        Log.d("test",response.body().string());                    }                });            }        }).start();    }

 

更多相关文章

  1. Android(安卓)Window与WindowManager 理解与源码分析
  2. Android倒计时神器(CountDownTimer)
  3. Android复习笔记(6) -BrodCastReceiver (广播接收者
  4. android 关于Toast重复显示解决方法
  5. .Net程序员玩转Android开发---(20)Android绑定服务
  6. linux chrome运行android应用方法
  7. Android(安卓)ViewRootImpl 解析
  8. Android(安卓)Studio Mac常用快捷键
  9. js判断移动端是否安装某款app的多种方法

随机推荐

  1. android客户端首次进入轮播引导图(一)
  2. Android SDK Manager安装Platform-tools
  3. 一个关于android中ListView的子控件中按
  4. Android Thread Looper Handler 关系
  5. Android TextView 中文本横向滚动效果实
  6. Android中使用AlarmManager需注意设置进
  7. android Uri的常用几个例子
  8. Android Studio MQTT功能
  9. android 6.0 权限问题的解决
  10. android实现界面底部的tab