gpt4 book ai didi

java - 为什么 java 不读取 Content-length 响应 header ?

转载 作者:行者123 更新时间:2023-11-29 05:20:13 27 4
gpt4 key购买 nike

我有以下代码来读取以下 url 指向的资源的内容长度响应 header ,但此代码不读取内容长度并返回 -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

然后在 google chrome 中的 inspect element > network 下,您将看到浏览器正确读取了内容长度。

内容长度:79476777

但为什么 java 代码无法读取内容长度?这是我正在使用的库的问题吗?感谢您的帮助!

最佳答案

那是因为服务器没有发送 Content-length header 。它至少有两种其他方式可以传达长度:

  1. 发送请求体后关闭套接字。在 HTTP 1.1 中,我认为这必须伴随一个“Connection: close” header 。在这种情况下,内容长度就是正文的长度,您必须全部阅读才能测量。

  2. 使用分块传输编码。在这种情况下,内容长度是 block 长度的总和。同样,您必须全部阅读以确定长度。

关于java - 为什么 java 不读取 Content-length 响应 header ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25128161/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com