在我的代码中,我使用一些Http Get请求将一些文件作为流下载。我使用以下代码:
public String getClassName(String url) throws ClientProtocolException, IOException {
HttpResponse response = sendGetRequestJsonText(url);
Header[] all = response.getAllHeaders();
for (Header h : all) {
System.out.println(h.getName() + ": " + h.getValue());
}
Header[] headers = response.getHeaders("Content-Disposition");
InputStreamParser.convertStreamToString(response.getEntity().getContent());
String result = "";
for (Header header : headers) {
result = header.getValue();
}
return result.substring(result.indexOf("''") + "''".length(), result.length()).trim();
}
但这会下载响应的完整内容。我想只检索没有内容的http标头。 HEAD请求似乎不起作用,因为我得到状态501,没有实现。我怎么能这样做?
答案 0 :(得分:18)
您可以考虑仅发出HEAD请求,而不是发出GET请求:
HEAD方法与GET相同,只是服务器不能 在响应中返回一个消息体。元信息包含 在HTTP头中响应HEAD请求应该是相同的 响应GET请求发送的信息。这种方法可以 用于获取有关该隐含的实体的元信息 请求而不转移实体主体本身。这个方法是 经常用于测试超文本链接的有效性,可访问性, 和最近的修改。
答案 1 :(得分:6)
您可以在请求中使用Range
header来指定要包含在响应实体中的字节范围。可能是这样的:
Range: bytes=0-0
如果它确实有效,您应该收到一个206 Partial Content
,其中包含响应实体中存在的Range
标头中指定的字节。但是,我没有试过这个,而且保证也没有工作:
服务器可以忽略Range标头。