okhttp和httpurlconnection之间的区别?

use*_*293 11 android httpurlconnection okhttp

这两个库有什么区别?

我怎么理解这两个lib之间也有区别,因为Volley使用httpurlconnection和Retrofit okhttp ....

但我不明白它们之间的区别以及两种解决方案的利弊.什么时候okhttp更好,什么时候httpurlconnection?

我想知道所以我知道我什么时候应该使用它们.

编辑:

为什么android使用okhttp进行httpurlconnection?如果我没有错,httpurlconnection没有使用okhttp之前

Sha*_*wah 9

okHttp OkHttp的优点可以轻松地为每个请求定制 - 例如每个请求的超时定制等. 当网络很麻烦时,OkHttp坚持不懈:它将从常见的连接问题中无声地恢复.如果您的服务有多个IP地址,如果第一次连接失败,OkHttp将尝试备用地址.

可以获得对任何请求的完整分析.您可以知道发送的字节数,接收的字节数以及任何请求所用的时间.这些分析很重要,因此您可以找到应用程序的数据使用情况以及每个请求所花费的时间,以便您可以识别缓慢的请求.

使用OkHttp很容易.它的请求/响应API设计具有流畅的构建器和不变性.它支持同步阻塞调用和带回调的异步调用.

OkHttp支持Android 2.3及更高版本.对于Java,最低要求是1.7.

  • 这是HttpUrlConnection无法实现的吗? (3认同)

小智 7

HttpURL连接

优点:

  • 轻量级 API 有助于简化管理并减少兼容性问题。
  • 在 HttpResponseCache 的帮助下自动处理缓存机制。
  • 减少网络使用量以及电池消耗。

查询参数:

    URI baseUri = new URI("www.exemple.com/search");
URI uri = applyParameters(baseUri, "word","java");
HttpURLConnection connection = 
    (HttpURLConnection) uri.toURL().openConnection();
connection.setDoInput(true);
connection.setDoOutput(false);
connection.setRequestMethod("GET");
connection.connect();
if (connection.getResponseCode() == 
   HttpURLConnection.HTTP_OK) {
   // ...
}
Run Code Online (Sandbox Code Playgroud)

Android 标头示例:

conn.setRequestProperty("Content-Type", "application/json");
conn.setRequestProperty("CustomHeader", token);
Run Code Online (Sandbox Code Playgroud)

好的http

优点:

  • 连接池
  • 压缩包
  • 缓存
  • 从网络问题中恢复
  • 重定向
  • 重试
  • 支持同步和异步调用

查询参数:

HttpUrl.Builder urlBuilder = HttpUrl.parse("https://httpbin.org/get").newBuilder();
urlBuilder.addQueryParameter("website", "www.journaldev.com");
urlBuilder.addQueryParameter("tutorials", "android");
String url = urlBuilder.build().toString();

Request request = new Request.Builder()
                     .url(url)
                     .build();
Run Code Online (Sandbox Code Playgroud)

Android 标头示例:

Request request = new Request.Builder()
    .header("Authorization", "replace this text with your token")
    .url("your api url")
    .build();
Run Code Online (Sandbox Code Playgroud)


Mar*_*ini 3

API 不同,我个人更喜欢 OkHttp。

请注意,从 Android 4.4 开始,网络层(HttpUrlConnection API 也是如此)是通过 OkHttp 实现的。

  • 谢谢Marco,但我也想知道差异和用例......我不明白它们之间的差异。那么从Android 4.4开始网络层是OkHttp?那么 httpurlconnection 又如何呢? (3认同)