打开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。
是否需要任何建议或进一步的代码? 感谢
答案 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应用确认。