1

たとえば、投稿URLが次の場合:

http://www.wolf.com/pcap/search?stime= {stime}&etime = $ {etime}&bpf = $ {bpf}

次に、これを行うことができます:

Map<String, String> vars = new HashMap<String, String>();
vars.put("bpf", bpf);

...
responseString = restTemplate.postForObject(url, null, String.class,vars);

bpfが文字列の場合、bpfのサイズに制限はありますか?どんなサイズでもいいですか?

4

1 に答える 1

1

残念ながら、答えは「状況によって異なります」です。

より正確にbpfは、URLにパラメーターとしてを追加する場合、POSTを実行するかGETを実行するかは実際には重要ではありません。サーバーが処理するURLの長さに制限がある場合もありますが、それはサーバーが受け入れるものに依存し、クライアントであるRestTemplateから決定することはできません。

たとえば、RESTリクエストを送信するサーバーがTomcatの場合、完全なヘッダー(URL、HTTP-Headerなど)の最大値は、Tomcat6.0以降ではデフォルトで8kBです。たとえば、https ://serverfault.com/questions/56691/whats-the-maximum-url-length-in-tomcatを参照してください。

サーバー側も制御できる場合に備えて、次のbpfように、パラメーターとしてではなくリクエスト本文として送信することで、期待されるインターフェースを変更できます。

Map<String, String> vars = new HashMap<String, String>();
// vars.put("bpf", bpf); <--- not needed
responseString = restTemplate.postForObject(url, bpf, String.class, vars);

(そしてもちろん、bpf代わりにリクエスト本文からサーバー上で取得します)。

そうしないと、運が悪くなり、URLの長さを制限する必要があります。プロキシまたはネットワークスニファを使用して、実際に送信される追加のヘッダーを確認し、それを8kBの制限から差し引いて、URLの最大長を取得します。

于 2013-02-10T16:05:22.770 に答える