0

我正在读取从我的 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。

我推断它可能会超出标头大小的限制,但不确定。谁能解释一下我应该怎么做才能阅读大型 xml 内容........?

4

1 回答 1

2

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

我希望 PHP 端正在尝试Content-Length自动设置。如果文档小于~7kb,它可以将它全部保存在缓冲区中,然后发送具有实际大小的标题。如果大于该值,则缓冲区填满,并且输出代码被迫发送没有 Content-Length 的标头。

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

  • 在客户端,如果内容长度报告为-1. 这仅仅意味着没有Content-Length设置标题。即使您将另一端固定为始终设置标题,您也应该这样做。

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

于 2012-07-14T11:40:23.263 回答