0

私はJerseyを使用して次のようなHTTPPOSTリクエストを送信しています。

MultivaluedMap<String, String> form = new MultivaluedMapImpl();
form.add("body", "Here there is my text");
ClientResponse response = resource.queryParams(form).type(MediaType.APPLICATION_FORM_URLENCODED).post(ClientResponse.class);

body要素を入力すると、長さが7999以下のテキスト-反対側からの応答は問題ありません

ただし、テキストの長さが8000を超える場合 、反対側からの応答は次のようになります。

400BadRequestの応答ステータスを返しました

コマンドラインでCURLから同じ呼び出しを送信しようとしましたが、正常に成功しました。

応答ステータスは400です

それはJersey/Tomcat構成の何かでしょうか?

Tomcatコネクタに追加しようとしましmaxHttpHeaderSize="65536"たが、役に立ちませんでした

4

2 に答える 2

2

Jersey コマンドも次のように変更します。

ClientResponse response = resource.type("application/x-www-form-urlencoded").post(ClientResponse.class, form);

クエリパラメーターで送信した方法の代わりに。

于 2012-07-26T19:54:08.707 に答える
0

ジャージーはリクエストヘッダーでデータを送信するため、ヘッダーサイズが超過すると、400 Bad リクエストが送信されます

tomcat/conf/server.xml の HTTP/1.1 コネクタ エントリを編集し、 maxHttpHeaderSize="65536" を追加して、デフォルトの最大値である 8K 程度から 64K に増やすことができます。必要に応じてこの数を増やすことができると思いますが、現時点での私のニーズとその動作には 64K で十分です。

コネクタ ポート="8080" maxHttpHeaderSize="65536" プロトコル="HTTP/1.1" ...

于 2013-11-29T09:58:16.463 に答える