[英]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.