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なしでヘッダーを送信するように強制されます。

これに対処する方法は2つあります。

  • クライアント側では、コンテンツの長さがとして報告されている場合は無視する必要があります-1。これは単にContent-Lengthヘッダーが設定されていないことを意味します。常にヘッダーを設定するようにもう一方の端を修正した場合でも、おそらくこれを行う必要があります。

  • サーバー側では、コンテンツの長さに特定の値を使用するようにPHPに指示する方法がある場合があります。

于 2012-07-14T11:40:23.263 に答える