OkHttp框架简单使用学习总结

start:2020年8月31日

一、前言

一直想学网络框架,这次终于尝到味道了。我先学的简单易懂的OkHttp,感觉用上它之后发送网络请求省事多了,上楼都不累了。将自己目前对OkHttp的理解写成博客,方便以后更深入的学习,同时也提供给需要的人参考。

 

二、What is OkHttp?

Okhttp是安卓端非常火热的轻量级网络框架,它是一个处理网络请求的开源项目,是由移动支付Square公司贡献的。用于替代HttpUrlConnection和Apache HttpClient(android API23 6.0里已移除HttpClient)(度娘提供)

相关网站:OkHttp官网、OkHttp_GitHub

 

三、增加开发依赖(AS)

在app路径下的 build.gradle配置文件中的 dependencies模块里增加以下代码(记得sync)(最新版本在github查看):

    implementation('com.squareup.okhttp3:okhttp:4.8.1')

 

四、发起请求流程

第一步:创建客户端 -> OkHttpClient

第二步:创建请求对象 -> Request

第三步:创建请求任务 -> Call

第四步:执行请求任务 ->  同步 execute()  /  异步 enqueue(Callback)

 

五、发起Get请求

 

同步请求(代码顺序依次执行):

        //创建客户端
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(10000, TimeUnit.MILLISECONDS)
.build();

//创建请求对象
Request request = new Request.Builder()
.get()
.url("https://xxxxx.xx")
.build();

//创建client请求任务
Call callTask = client.newCall(request);

//执行请求任务-同步
Response response = callTask.execute();
if (response.isSuccessful()) {
//请求成功
ResponseBody body = response.body();//拿到响应体
Gson gson = new Gson();//实例化Gson对象
XXXBean xxx = gson.fromJson(body.string(),
XXXBean.class);//通过Gson的fromJson()方法将响应回来的body转换为bean类
//通过Gson将响应body转换为Bean类,然后就方便操作了

} else {
//请求失败

}

 

异步请求(网络请求代码执行后等待响应后继续执行,在等待的时候主代码会继续执行,不会等待响应之后再执行,这就与网络请求代码执行异步了):

        //创建客户端
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(10000, TimeUnit.MILLISECONDS)
.build();

//创建请求对象
Request request = new Request.Builder()
.get()
.url("https://xxxxx.xx")
.build();

//创建client请求任务
Call callTask = client.newCall(request);

//执行请求任务-异步
callTask.enqueue(new Callback() {
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
Log.d(TAG, "onFailure: " + e.toString());
//请求失败
}

@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
int code = response.code();
if (code == HTTP_OK) {
//请求成功
}
});

 

六、发起Post请求

 

同步请求:

        //创建客户端
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(10000, TimeUnit.MILLISECONDS)
.build();

//创建请求对象
MediaType contentType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody requestBody = RequestBody.create(encryptBody, contentType);
Request request = new Request.Builder()
.post(requestBody)
.url("https://xxx.xxx")
.addHeader("device-platform", "android")
.build();

//创建client请求任务
Call callTask = client.newCall(request);

//执行请求任务-同步
Response response = callTask.execute();
if (response.isSuccessful()) {
//请求成功

}

 

异步请求:

        //创建客户端
OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(10000, TimeUnit.MILLISECONDS)
.build();

//创建请求对象
MediaType contentType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody requestBody = RequestBody.create(encryptBody, contentType);
Request request = new Request.Builder()
.post(requestBody)
.url("https://xxx.xxx")
.addHeader("device-platform", "android")
.build();

//创建client请求任务
Call callTask = client.newCall(request);

//执行请求任务-异步
callTask.enqueue(new Callback() {
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
Log.d(TAG, "onFailure: " + e.toString());
//请求失败
}

@Override
public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {
int code = response.code();
if (code == HTTP_OK) {
//请求成功

}
}
});

 

七、成员介绍

OkHttpClient 客户端
Request 请求对象
Call 执行请求对象
Gson -> 它是 Google 提供的用来在 Java 对象和 JSON 数据之间进行映射的 Java 类库。可以将一个 JSON 字符串转成一个 Java 对象,或者反过来。
Json -> (JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。

 

八、Bean类与Body之间的互换 (Gson的使用)

 

ResponseBody -> String -> Bean类


ResponseBody body = response.body();//拿到响应体
Gson gson = new Gson();//实例化Gson对象
XXXBean xxx = gson.fromJson(body.string(), XXXBean.class);//通过Gson的fromJson()方法将响应回来的body转换为bean类

 

Bean类 -> String -> RequestBody


MediaType contentType = MediaType.parse("application/x-www-form-urlencoded");
XXXBean xxx = new XXXBean();
Gson gson = new Gson();
String s = gson.toJson(xxx);
RequestBody requestBody = RequestBody.create(s, contentType);

 

end:by take

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

OkHttp框架简单使用学习总结

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » OkHttp框架简单使用学习总结
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏