4

HTTP ヘッダーの任意のセットを取り込んで WebResource インスタンスにダンプしようとしています。WebResource インターフェイスでは、クエリ パラメータを使用してこれを行うことができます。

        webResource.queryParam(key, value)

        webResource.queryParams(MultivaluedMap<String, String> queryMap)

ただし、API では、ヘッダーに対して同じことを行うことはできません。機能はただ一つ、

            webResource.header(key, value)

HTTPヘッダーのキーと値のペアを入力できますが、機能はありません

 webResource.headers(MultivaluedMap<String, String> headersMap)

この問題を解決するために、WebResource からビルダーを取得して反復処理し、ヘッダーを 1 つずつ追加しようとしました

        WebResource.Builder builder = webResource.getRequestBuilder();
    for(Map.Entry<String, String> headersMapEntry : headersMap.entrySet()){
        builder = builder.header(
                       headersMapEntry.getKey(), headersMapEntry.getValue());
    }

しかし、それは私の問題を解決していないようです。

任意のマップを WebResource のヘッダーにダンプできるように、Jersey で回避策を実行する方法を知っている人はいますか?

ありがとう、デビッド

4

3 に答える 3

5

これを回避する唯一の方法は、最初に getRequestBuilder() を使用して webResource から requestBuilder を抽出し、次に requestBuilder を使用して残りのリクエストを構築および実行することであることが判明しました。

于 2011-08-22T20:48:02.507 に答える
1

この投稿では、この問題と解決策を例を挙げてより詳しく説明しています: http://juristr.com/blog/2015/05/jersey-webresource-ignores-headers/

于 2015-08-12T11:17:18.537 に答える
0

RequestBuilder または PartialRequestBuilder を取得した場合、実際のリクエストを起動できないため、以下を取得する必要があります。

WebResource.Builder builder = webResource.getRequestBuilder();

WebResource.Builder には、get、post などがあります。

response = builder.post(ClientResponse.class, body);
于 2014-12-11T09:15:25.590 に答える