主页: https://github.com/square/okhttp
特点:
* 支持HTTP/2 和 SPDY
* 默认支持 GZIP 降低传输内容的大小
* 支持网络请求的缓存
* 当网络出现问题时,自动重试一个主机的多个 IP 地址
请求流程:
配置: compile 'com.squareup.okhttp3:okhttp:3.2.0'
使用示例代码:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//1. 创建http客户端
OkHttpClient okHttpClient = new OkHttpClient();
//2. 创建请求
Request request = new Request.Builder()
.get() //get请求
.url("http://www.baidu.com")
.build();
//3. 发起请求
//同步的请求,耗时操作不推荐使用
// okHttpClient.newCall().execute();
//异步请求
okHttpClient.newCall(request).enqueue(new MyCallback());
}
private class MyCallback implements Callback {
//失败 ,回调方法在子线程中
@Override
public void onFailure(Call call, IOException e) {
// Toast.makeText(MainActivity.this,"网络请求失败",Toast.LENGTH_SHORT).show();
showToastInAnyThread("网络请求失败");
}
//成功回调 ,回调方法在子线程中
@Override
public void onResponse(Call call, Response response) throws IOException {
String text = response.body().string();
showToastInAnyThread(text);
}
}
public void showToastInAnyThread(final String text){
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(MainActivity.this,text,Toast.LENGTH_SHORT).show();
}
});
}
}