网络通信框架之okHttp
主页: 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(); } }); } }
最后,关注【码上加油站】微信公众号后,有疑惑有问题想加油的小伙伴可以码上加入社群,让我们一起码上加油吧!!!