繁体   English   中英

网址连接未读取内容长度

[英]urlconnection not reading content-length

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

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

当时我以为服务器未设置内容长度标头(连接对象中的dig确认值是-1),因此使用PHP中的以下内容设置自己:

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

当我打印出strlen($output)的值时,我得到了正确的值,但是此标头似乎并没有出现在Java中。

需要任何建议或进一步的代码吗? 谢谢

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

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

运行此命令时,您将看到它打印出内容长度。

原来, transfer-encoding设置为chunked时应忽略content-length 看来我的Web主机会更进一步,甚至完全删除了标头,即使我在PHP中手动设置了它也是如此。 已通过Chrome的高级REST应用确认。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM