Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 获取响应头OkHttp_Java_Retrofit_Okhttp - Fatal编程技术网

Java 获取响应头OkHttp

Java 获取响应头OkHttp,java,retrofit,okhttp,Java,Retrofit,Okhttp,我需要使用OkHTTP库检查HTTP请求的响应头。在加载数据之前,我需要检查它的上次更新时间。问题在于,响应主体大约为2MB,因此我只需要获取上次修改的头。是否可以只加载响应头而不加载响应体来提高程序RESTful操作的速度 您可以发送一个只检索头的HTTP请求。您只需要检查服务器应用程序是否支持HEAD请求 HEAD方法与GET相同,只是服务器不能 在响应中返回消息正文。包含的元信息 在HTTP中,响应头请求的头应该相同 响应GET请求而发送的信息。这种方法可以 用于获取由 请求而不传输实体体

我需要使用
OkHTTP
库检查
HTTP请求的响应头。在加载数据之前,我需要检查它的上次更新时间。问题在于,响应主体大约为
2MB
,因此我只需要获取
上次修改的
头。是否可以只加载响应头而不加载响应体来提高程序RESTful操作的速度

您可以发送一个只检索头的HTTP请求。您只需要检查服务器应用程序是否支持HEAD请求

HEAD方法与GET相同,只是服务器不能 在响应中返回消息正文。包含的元信息 在HTTP中,响应头请求的头应该相同 响应GET请求而发送的信息。这种方法可以 用于获取由 请求而不传输实体体本身。这种方法是可行的 通常用于测试超文本链接的有效性、可访问性、, 和最近的修改。
()

OkHttp的示例:

String url = ...
Request request = new Request.Builder().url(url).head().build();

响应主体是流式的,因此您可以发出常规请求,读取标题,然后决定是否使用主体。如果你不想要身体,你可以
close()


为可能被放弃的响应提供服务会给服务器带来轻微的成本。但是,总成本将低于先发出
HEAD
请求,然后发出
GET
请求,除非您希望放弃相当一部分请求(比如>90%)。

您能举个例子说明如何使用OkHttp实现这一点吗?我在javadoc中找不到操作它的方法((@Near1999)我在回答中更正了javadoc链接。它现在指向
Request.Builder
中的
head()
方法。这有帮助吗?我知道如何生成请求,我不知道如何生成head请求,javadoc对我没有帮助(我知道如何向请求添加标题以及如何在响应时获取标题,但我不知道如何在不从服务器下载正文的情况下仅获取标题。如果您知道如何获取标题,请发布一个代码示例。@Near1999在我调用response.body()时添加了一个示例SO)请求主体只开始下载?几乎。在此之前,它将下载前几个KiB,但在调用
response.body()
之前,它不会下载太多。