[英]HttpUrlConnection gets response body on connect()
考虑以下代码。
try {
httpURLConnection = (HttpURLConnection) new URL(strings[0]).openConnection();
httpURLConnection.setConnectTimeout(Config.HTTP_CONNECTION_TIMEOUT);
httpURLConnection.setReadTimeout(Config.HTTP_CONNECTION_TIMEOUT);
httpURLConnection.connect();
responseCode = httpURLConnection.getResponseCode();
httpURLConnection.getHeaderFields();
}
finally {
httpURLConnection.disconnect();
}
问题是即使我不使用InputStream
读取响应,在我的 Internet/Wifi 连接日志中我也可以看到响应正文。 我想要的只是检查标题中的一个字段,并根据该字段我将继续阅读InputStream
。
我的问题是这些:
BufferedInputStream
之前,连接的流自动下载所有/部分文件是否正确?InputStream
读取响应?响应包括标头和正文,服务器在发送正文之前不会停止让客户端确认标头。
当客户端能够从头部读取响应代码时,主体的一部分已经被发送,其大小取决于网络延迟、缓冲......
HttpURLConnection.getResponseCode()
的当前实现甚至使用getInputStream()
来确保连接处于正确状态。
客户端可以选择忽略正文,但通常不推荐这样做,因为它可能会阻止重用持久连接。
我不确定 Android,但从 Java 6 开始,后台线程会自动用于读取剩余数据。
如果If-Modified-Since
不是一个选项,为什么不使用HEAD
请求? :
如果使用 HTTP GET 方法请求指定的资源,则 HTTP HEAD 方法请求返回的标头。 例如,可以在决定下载大量资源以节省带宽之前完成此类请求。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.