2

w3.org でこれに対する答えが見つかりませんでした。

ほとんどすべての例には、soap-response http-header にコンテンツの長さが含まれています。

最初の Q: でも、技術的に必要ですか?

php-soap-library (PEAR SOAP_Server) が応答 xml の適切なコンテンツの長さを設定している SOAP サービスに苦労していますが、その後 lighttpd がコンテンツを圧縮しているため、コンテンツの長さよりも小さい応答を取得しています。 .

また、soapUI などの一部のアプリケーションは、(http-header によって設定された) すべてのコンテンツが到着するのを待っています。

2 番目の質問:

  • このチェーンで間違った動作をしているのは誰ですか? php -> lighttpd -> soapUI
  • 解凍されたコンテンツの長さを設定するphpコードですか?
  • 応答を圧縮するのは lighttpd ですか? content-length ヘッダーを上書きまたは削除しませんか?
  • それとも、それ以上のコンテンツを 15 秒待つべきではない soapUI ですか?

編集: さらに調査した結果、php-script がコンテンツ自体を圧縮しており、lighttpd ではなく、常に umcompressed Content-length を設定していることが明らかになりました。

それにもかかわらず、Tom van der Woerdts の 回答は非常に役に立ちます。

4

1 に答える 1

3

最初の質問
いいえ、HTTP 1.1 仕様はヘッダーを必要とせずContent-Length、SOAP は HTTP の上に構築されているためです。SOAP クライアントがそれを必要とする可能性がありますが、SOAP 自体は必要ありません。( SOAP 仕様には「長さ」という言葉すら含まれていません)

2 番目の質問
PHP はおそらく間違っています。Content-Lengthヘッダーを設定するべきではありません。lighttpd もおそらく少し間違っていますContent-Length。コンテンツが変更された場合、ヘッダーを実際にオーバーライドする必要があるからです。また、SOAP は非常に明確な EOF (終了タグ) を持つ XML に基づいているため、soapUI で問題を修正できます。

PHP にContent-Lengthヘッダーを設定させないことをお勧めします。

于 2012-04-23T14:23:48.893 に答える