簡體   English   中英

為什么java沒有讀取Content-length響應頭?

[英]Why is java not reading the Content-length response header?

我有以下代碼來讀取由以下url指向的資源的內容長度響應頭,但此代碼不讀取內容長度並返回-1。 我想知道為什么。

 try{


String song_url = "https://doc-0c-6o-docs.googleusercontent.com/docs/securesc/mtop3kcd4g9holc81thpce8mmck772ja/10to2su90o897bl390ojai9srph2fmvq/1407182400000/15635312626103908265/15635312626103908265/0B8CobC-HnuclMm5sUnVpOW13eEk?e=download&h=16653014193614665626&nonce=5beqd4pl58o30&user=15635312626103908265&hash=qbqjjhkrpco10b8ggu7ko5qa5c64th2m";


                    URL web = new URL(song_url);

                    con1 = web.openConnection();

                     total_size = con1.getContentLength();

                    ((HttpURLConnection)con1).disconnect();

                    return total_size;

                }
                catch(Exception e){

                    e.printStackTrace();
                }

                ((HttpURLConnection)con1).disconnect();

現在,奇怪的是如果你只是將這個url粘貼到瀏覽器中

https://doc-0c-6o-docs.googleusercontent.com/docs/securesc/mtop3kcd4g9holc81thpce8mmck772ja/10to2su90o897bl390ojai9srph2fmvq/1407182400000/15635312626103908265/15635312626103908265/0B8CobC-HnuclMm5sUnVpOW13eEk?e=download&h=16653014193614665626&nonce=5beqd4pl58o30&user=15635312626103908265&hash=qbqjjhkrpco10b8ggu7ko5qa5c64th2m

然后在谷歌瀏覽器中檢查元素>網絡,然后您將看到瀏覽器正確讀取內容長度。

內容長度:79476777

但是為什么java代碼無法讀取內容長度? 這是我正在使用的庫的問題嗎? 謝謝您的幫助!

那是因為服務器沒有發送Content-length頭。 它至少還有兩種傳達長度的方式:

  1. 通過在發送請求主體后關閉套接字。 在HTTP 1.1中我認為這必須伴隨着'Connection:close'標題。 在這種情況下,內容長度是正文的長度,您必須全部閱讀以測量它。

  2. 通過使用分塊傳輸編碼。 在這種情況下,內容長度是塊長度的總和。 你必須再讀一遍以確定長度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM