okhttp3的使用

简介

HTTP 是现代应用程序网络的方式。这就是我们交换数据和媒体的方式。有效地执行 HTTP 可以使您的内容加载速度更快并节省带宽。

OkHttp 是一个默认高效的 HTTP 客户端:

  • HTTP/2 支持允许对同一主机的所有请求共享一个套接字。
  • 连接池减少了请求延迟(如果 HTTP/2 不可用)。
  • 透明 GZIP 可缩小下载大小。
  • 响应缓存完全避免网络重复请求。

官网地址:https://square.github.io/okhttp/

前置准备

1.pom中引入依赖

 <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.9.0</version>
        </dependency>

2.创建实例

   方法1:默认的构造方法:OkHttpClient client = new OkHttpClient();

   方法2:这种方式支持用户自定义参数设置,比如日志拦截器,设置缓存目录和大小等参数。

public final OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new HttpLoggingInterceptor())
.cache(new Cache(cacheDir, cacheSize))
.build();

   方法3:如果要求使用现有的实例,可以通过newBuilder()方法来进行构造。

OkHttpClient okHttpClient = new OkHttpClient.Builder()
        .connectTimeout(30, TimeUnit.SECONDS)//设置连接超时时间
        .readTimeout(30, TimeUnit.SECONDS)//设置读取超时时间
        .build();

使用(以下贴例子)

发现一篇写的很好的文章:https://blog.csdn.net/jiaonizuoren/article/details/89915198

1.get请求,同步请求(execute()方法)

public class okttpTest {
    public static void main(String[] args) throws IOException {

        OkHttpClient client = new OkHttpClient();

        String url = "http://www.baidu.com";

        Request request = new Request.Builder().url(url).method("GET", null).build();
        Response response = client.newCall(request).execute();

        String json = response.body().string();
        System.out.println(request);
        System.out.println(response.code());
        System.out.println(response);
    }
}

输出如下;

2. get请求,异步请求(execute()方法)

Request request = new Request.Builder()
                .url("http://publicobject.com/helloworld.txt")
                .build();

        client.newCall(request).enqueue(new Callback(){
            @Override
            public void onResponse(@NotNull Call call, @NotNull Response response) throws IOException {

                if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
                Headers responseHeaders = response.headers();
                for (int i = 0; i < responseHeaders.size(); i++) {
                    System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
                }
                System.out.println(response.body().string());
            }

            @Override
            public void onFailure(@NotNull Call call, @NotNull IOException e) {
                e.printStackTrace();
            }
        });

总结

Get:

OkHttpClient client = new OkHttpClient();

String run(String url) throws IOException {
  Request request = new Request.Builder()
      .url(url)
      .build();

  try (Response response = client.newCall(request).execute()) {
    return response.body().string();
  }
}

Post:

public static final MediaType JSON
    = MediaType.get("application/json; charset=utf-8");

OkHttpClient client = new OkHttpClient();

String post(String url, String json) throws IOException {
  RequestBody body = RequestBody.create(JSON, json);
  Request request = new Request.Builder()
      .url(url)
      .post(body)
      .build();
  try (Response response = client.newCall(request).execute()) {
    return response.body().string();
  }
}

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于OkHttp3的封装使用,你可以按照以下步骤进行: 1. 添加OkHttp3依赖:在你的项目中的build.gradle文件中添加以下依赖: ```groovy dependencies { implementation 'com.squareup.okhttp3:okhttp:4.9.1' } ``` 2. 创建OkHttpClient实例:在你的代码中创建一个OkHttpClient实例,可以设置一些参数,如连接超时时间、读写超时时间等。 ```java OkHttpClient client = new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) // 设置连接超时时间为10秒 .readTimeout(10, TimeUnit.SECONDS) // 设置读取超时时间为10秒 .writeTimeout(10, TimeUnit.SECONDS) // 设置写入超时时间为10秒 .build(); ``` 3. 创建Request对象:根据你的请求需求,创建一个Request对象,包括请求的URL、请求方法(GET、POST等)、请求头、请求体等。 ```java Request request = new Request.Builder() .url("http://www.example.com/api") // 设置请求的URL .addHeader("Authorization", "Bearer token") // 设置请求头,如添加认证信息 .post(RequestBody.create(MediaType.parse("application/json"), requestBody)) // 设置请求体,如发送JSON数据 .build(); ``` 4. 发送请求并处理响应:使用OkHttpClient实例发送请求,并处理返回的响应。 ```java try { Response response = client.newCall(request).execute(); if (response.isSuccessful()) { String responseBody = response.body().string(); // 处理响应结果 } else { // 处理请求失败 } } catch (IOException e) { e.printStackTrace(); // 处理异常 } ``` 这是一个基本的OkHttp3的封装使用示例,你可以根据自己的需求进行进一步定制和扩展。希望对你有帮助!如果有其他问题,可以继续问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值