OkHttp使用方法

大标 2022年3月16日17:31:01
评论
18

HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。OkHttp是一个高效的HTTP客户端,它有以下默认特性。

1、支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接
2、连接池减少请求延时
3、透明的GZIP压缩减少响应数据的大小
4、缓存响应内容,避免一些完全重复的请求

1.依赖

 <!-- okhttp -->
      <dependency>
        <groupId>com.squareup.okhttp3</groupId>
        <artifactId>okhttp</artifactId>
        <version>3.2.0</version>
    </dependency>

2.GET请求到服务端

public static void syncGet(String url){
        // 创建OkHttpClient对象
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                                                    .connectTimeout(10, TimeUnit.SECONDS)//设置链接超时
                                                    .writeTimeout(10, TimeUnit.SECONDS) // 设置写数据超时
                                                    .readTimeout(30, TimeUnit.SECONDS) // 设置读数据超时
                                                    .build(); 
        // 创建一个请求
        Request request = new Request.Builder().url(url).build(); 
       
        try {
            Response response = okHttpClient.newCall(request).execute();
            /**
             * 获取返回的数据,可通过response.body().string()获取,默认返回的是utf-8格式;
             * string()适用于获取小数据信息,如果返回的数据超过1M,建议使用stream()获取返回的数据, 因为string()
             * 方法会将整个文档加载到内存中。
             */
            // 打印数据
            System.out.println(response.body().string());
            
        } catch (IOException e) {
            e.printStackTrace();
        } 
        
    }

3.POST

     public static void postFromParameters(String url,String name,String value) {
        //OkHttpClient对象
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                                                    .connectTimeout(10, TimeUnit.SECONDS)//设置链接超时
                                                    .writeTimeout(10, TimeUnit.SECONDS) // 设置写数据超时
                                                    .readTimeout(30, TimeUnit.SECONDS) // 设置读数据超时
                                                    .build();
        //表单键值对
        RequestBody formBody = new FormBody.Builder().add(name,value).build();
        //请求
        Request request = new Request.Builder().url(url).post(formBody).build(); 
        okHttpClient.newCall(request).enqueue(new okhttp3.Callback() {
             //成功后的回调
             public void onResponse(Call call, Response response) throws IOException {
                 System.out.println(response.body().string());
             }
            //失败后的回调
             public void onFailure(Call call, IOException e) {
                 System.out.println(e.getMessage());
             }
        });
    }

 

  • 我的微信
  • 微信扫一扫
  • weinxin
  • 我的微信公众号
  • 微信扫一扫
  • weinxin
大标
  • 本文由 发表于 2022年3月16日17:31:01
  • 转载请务必保留本文链接:https://www.tanhuibiao.com/script/fuwuqi/4951.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: