urlconnection没有读取内容长度

时间:2013-06-09 22:57:16

标签: java urlconnection content-length http-content-length

打开URLConnection时,我使用以下代码来获取内容长度,但它返回-1。

URL url = new URL(sUrl[0]);
URLConnection connection = url.openConnection();
connection.connect();
int fileLength = connection.getContentLength();

我假设服务器没有设置内容长度标题(并且连接对象中的挖掘确认值为-1),因此在PHP中使用以下内容自行设置:

header('Content-Length: '.strlen($output));

当我打印出strlen($output)的值时,我得到了正确的值,但这个标题似乎不适合Java。

是否需要任何建议或进一步的代码? 感谢

2 个答案:

答案 0 :(得分:0)

如果内容长度标题确实是从您要连接的服务器发回给您的,那么您拥有的代码将起作用。您可以通过点击一个返回Content-Length的简单Web服务来证明,如下面的代码所示:

URL url = new URL("http://freegeoip.net/json/199.201.1.200");
URLConnection connection = url.openConnection();
int fileLength = connection.getContentLength();    
System.out.println(fileLength);

当你运行它时,你会看到它打印出一个内容长度。

答案 1 :(得分:0)

content-length设置为transfer-encoding时,应忽略chunked。看起来我的网络主机,进一步采取这一点,并完全删除标题,即使我在PHP中手动设置它。通过Chrome的高级REST应用确认。