OkHttp学习心得

在大作业中需要网络连接从服务器得到数据,上网学习后发现Android有4种网络连接方式HttpClient、HttpURLConnection、OKHttp和Volley。经过比较后,我觉得使用OKHttp,下面是我的学习心得.

1. GET

在OKHttp,每次网络请求就是一个Request,我们在Request里填写我们需要的url,header等其他参数,再通过Request构造出Call,Call内部去请求参数,得到回复,并将结果告诉调用者。

Request request = new Request.Builder()

.url(url)

.build();

Response response = client.newCall(request).execute();

我们通过Request.Builder传入url,然后直接execute执行得到Response,通过Response可以得到code,message等信息。

这个是通过同步的方式去操作网络请求,而android本身是不允许在UI线程做网络请求操作的,因此我们需要自己开启一个线程。

当然,OKHttp也支持异步线程并且有回调返回,有了上面同步的基础,异步只要稍加改动即可。

private void enqueue(){

Request request = new Request.Builder()

.url(url)

.build();

client.newCall(request).enqueue(new Callback() {

@Override

public void onFailure(Request request, IOException e) {

}

// 成功时响应的回调函数

@Override

public void onResponse(Response response) throws IOException {

//NOT UI Thread

if(response.isSuccessful()){

System.out.println(response.code());

System.out.println(response.body().string());

}

}

});

}

就是在同步的基础上讲execute改成enqueue,并且传入回调接口,但接口回调回来的代码是在非UI线程的,因此如果有更新UI的操作记得用Handler或者其他方式。

2、POST

说完GET该介绍些如何使用POST,POST情况下我们一般需要传入参数,甚至一些header,传入参数或者header

Request request = new Request.Builder()

.url("https://api.github.com/repos/square/okhttp/issues")

.header("User-Agent", "OkHttp Headers.java")

.addHeader("Accept", "application/json; q=0.5")

.addHeader("Accept", "application/vnd.github.v3+json")

.build();

传入POST参数

RequestBody formBody = new FormEncodingBuilder()

.add("platform", "android")

.add("name", "bug")

.add("subject", "XXXXXXXXXXXXXXX")

.build();

Request request = new Request.Builder()

.url(url)

.post(body)

.build();

Response response = client.newCall(request).execute();

if (response.isSuccessful()) {

return response.body().string();

} else {

throw new IOException("Unexpected code " + response);

}

这个代码是同步网络请求,异步就改成enqueue就行了。


另外,我在作业中还遇到了一个问题

当我想给textview设置值的时候会报错

sId.setText(student.getNumber());

查阅资料后发现textview不能直接给他int值

sId.setText(student.getNumber()+"");

这样写就不会报错了


参考资料 http://square.github.io/okhttp/


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,282评论 19 139
  • 参考Android网络请求心路历程Android Http接地气网络请求(HttpURLConnection) 一...
    合肥黑阅读 21,657评论 7 63
  • 这篇文章主要讲 Android 网络请求时所使用到的各个请求库的关系,以及 OkHttp3 的介绍。(如理解有误,...
    小庄bb阅读 5,022评论 0 4
  • 这篇文章主要总结Android著名网络框架-okhttp的基础使用。 okhttp是什么 okhttp是Andro...
    磨砺营IT阅读 4,086评论 0 1
  • 手艺:皮具制作 城市:重庆 宣言:做皮包就像一次冒险和旅行 雷镭在清净的小区内寻到两间房,将一间装修成皮具展示厅,...
    sayulynn阅读 3,836评论 1 1

友情链接更多精彩内容