前言
Android系统提供了两种HTTP通信类, 一个是 HttpURLConnection 和 HttpClient .
尽管Google在大部分安卓版本中推荐是使用HttpURLConnection ,但这个类相比HTTPClient实在是太难用了.
OkHttp是一个相对比较成熟的解决方案,据说Android4.4的源码中可以看到HttpURLConnection 已经替换成了OkHttp实现了,所以我们更有理由相信OKHttp的强大.
官方资料
基本使用
1,Android Studio 配置文件:
compile 'com.squareup.okhttp:okhttp:2.5.0'
注意: okhttp内部依赖okio,别忘了同时导入okio:
compile 'com.squareup.okio:okio:1.5.0'
2. HTTP GET
// Http Get
OkHttpClient okHttpClient = new OkHttpClient();
Request request = new Request.Builder().url("http://www.baidu.com/").build();
Call call = okHttpClient.newCall(request);
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
}
@Override
public void onResponse(Response response) throws IOException {
String htmlStr = response.body().string();
Log.d("okhttp",htmlStr.toString());
}
});
(1)通过一个get请求,首先创建Request对象,参数只是一条Ur链接,当然还可以在Request.Builder设置更多的参数比如:header, method等等。
(2)然后通过Request的对象去构造得到一个Call 对象,类似于将你的请求封装成了任务,既然有任务就有execute() 和cancel()等方法。
(3)最后调用的是call.enqueue, 将call 加入调度队列中,然后等待任务完成,即可在Callback中得到结果。