通过http请求读取时ContentLength变为-1

时间:2012-07-14 11:13:26

标签: java android

我正在读取我在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内容........?

1 个答案:

答案 0 :(得分:2)

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

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

有两种方法可以解决这个问题。

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

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