okhttp总结

泪湿孤枕 提交于 2020-01-09 03:28:52

简介

OKHttp是Square公司的一个网络请求框架。
使用前的准备工作:
学习:地址

添加依赖:
implementation 'com.squareup.okhttp3:okhttp:version' 

添加权限:
<uses-permission android:name="android.permission.INTERNET"/>

OkHttp进行Get请求

1、拿到OkHttpClient对象
2、构造Request对象
3、将Request封装为Call
4、根据需要调用同步或者异步请求方法

OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder()
        .get()
        .url("www.baidu.com")
        .build();
Call call = okHttpClient.newCall(request);

//同步请求  返回response,会抛出IO异常须try catch【同步调用会阻塞主线程,一般不使用】
try {
    Response response = call.execute();
} catch (IOException e) {
    e.printStackTrace();
}

//异步调用,并设置回调函数【回调函数在子线程,须注意回到主线程更新ui】
call.enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        runOnUiThread(() -> {
			//更新ui
        });
    }
});

OkHttp进行Post请求提交键值对

使用OkHttp进行Post请求和进行Get请求很类似,只需要五步即可完成:
1、拿到OkHttpClient对象
2、构建FormBody,传入参数
3、构建Request,将FormBody作为Post方法的参数传入
4、将Request封装为Call
5、调用请求,重写回调方法。(同步或者异步请求方法)

OkHttpClient okHttpClient = new OkHttpClient();
FormBody formBody=new FormBody.Builder()
        .add("username", "admin")
        .add("password", "root")
        .build();
Request request=new Request.Builder()
        .url("http://www.jianshu.com/")
        .post(formBody)
        .build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
    @Override
    public void onFailure(Call call, IOException e) {
    }

    @Override
    public void onResponse(Call call, Response response) throws IOException {
        Log.d("onResponse", "onResponse: "+response.code());
    }
});
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!