跳转至

OkHttp使用

简介

HTTP是现代应用程序的网络请求方式。它是我们交换数据和媒体的方式。高效地执行HTTP可以让你的东西加载得更快,并节省带宽。

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

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

当网络出现问题时,OkHttp会坚持不懈:它会默默地从常见的连接问题中恢复。如果您的服务有多个IP地址,如果第一次连接失败,OkHttp会尝试更换地址。这对于IPv4+IPv6和冗余数据中心的服务是必要的。OkHttp支持现代的TLS功能(TLS 1.3,ALPN,证书引脚)。它可以被配置为广泛的连接。

使用OkHttp很简单。它的请求/响应API被设计成具有流畅的构建器和不可更改性。它既支持同步阻塞调用,也支持带回调的异步调用。

添加依赖

Get请求

  private final OkHttpClient client = new OkHttpClient();

  public void run() throws Exception {
    Request request = new Request.Builder()
        .url("https://publicobject.com/helloworld.txt")
        .build();

    try (Response response = client.newCall(request).execute()) {
      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());
    }
  }