在我的代码中,我使用一些Http Get请求来下载一些文件作为stream。 我使用下面的代码:
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,没有实施。 我怎样才能做到这一点?
而不是做一个GET请求,你可能会考虑只是做一个HEAD请求:
HEAD方法与GET相同,除了服务器不能在响应中返回消息体。 响应HEAD请求的HTTP头中包含的元信息应该与响应GET请求发送的信息相同。 这个方法可以用来获得有关请求隐含的实体的元信息,而不用传递实体主体本身。 此方法通常用于测试超文本链接的有效性,可访问性和最近的修改。
您可能可以在请求中使用Range
标头指定要包含在响应实体中的字节范围。 可能是这样的:
Range: bytes=0-0
如果确实有效,则应该返回一个206 Partial Content
,其中Range
头部中指定的字节出现在响应实体中。 但是,我没有尝试过,也不能保证工作:
服务器可能会忽略Range标头。