gpt4 book ai didi

java - 读取http请求时ContentLength变为-1

转载 作者:行者123 更新时间:2023-12-02 07:41:46 26 4
gpt4 key购买 nike

我正在读取从我的 Android 应用程序中的 php 文件返回的生成的 xml 输出,如下所示

URL u = new URL("http://www.abcdefg.com/hijklm/nopqr.php");
URLConnection uc = u.openConnection();
String contentType = uc.getContentType();
int contentLength = uc.getContentLength();

在 php 文件中,xml 是动态生成的。问题是当 xml 大小增加时,contentLength 的值变为 -1。我观察到,当 xml 的大小增加超过 7kb 时,contentLength 变量的值包含 -1。

我推断它可能超出 header 大小的限制,但不确定。谁能给我解释一下读取大的 xml 内容我该怎么办......?

最佳答案

您在客户端看到的内容长度是在服务器端的 header 中设置的。如果您看到 -1 这意味着回复中没有 Content-Length header 。

我预计 PHP 端会尝试自动设置 Content-Length。如果文档小于~7kb,它可以将其全部保存在缓冲区中,然后发送具有实际大小的 header 。如果大于该值,缓冲区就会填满,并且输出代码将被迫发送不带内容长度的 header 。

有两种可能的方法来解决这个问题。

  • 在客户端,如果内容长度报告为 -1,您应该忽略它。这仅仅意味着没有设置 Content-Length header 。即使您修复另一端以始终设置 header ,您也应该这样做。

  • 在服务器端,可能有一种方法告诉 PHP 使用特定的内容长度值。

关于java - 读取http请求时ContentLength变为-1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11483294/

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