zoukankan      html  css  js  c++  java
  • 网络通信框架之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();
                }
            });
        }
    
    }
    
  • 相关阅读:
    js设计模式 -- 拷贝模式
    超简单的SpringBoot整合mybatis
    使用JS调用手机本地摄像头或者相册图片识别二维码/条形码
    SpringBootsad整合EhCache做缓存处理
    调用微信的扫一扫功能详解说明---(java 排坑版)
    获取系统文件的创建日期
    在windows上获取文件创建时间
    简单计算器
    lambda-基于谓词筛选值序列
    IEnumerable<T>和IQueryable<T>区别
  • 原文地址:https://www.cnblogs.com/loaderman/p/6445854.html
Copyright © 2011-2022 走看看