2015-09-11 11 views
7

私はすでにHow to add Headers on RESTful call using Jersey Client APIを見てきましたが、これはJersey 1.x用です。Jersey 2.x:RESTfulクライアントにヘッダーを追加する方法

Jersey 2.21でヘッダ値(認証トークンなど)を設定するにはどうすればよいですか?

public static String POST(final String url, final HashMap<String, String> params) 
{ 
    ClientConfig config = new ClientConfig(); 
    Client client = ClientBuilder.newClient(config); 

    WebTarget target = client.target(url); 

    String data = new Gson().toJson(params); 

    Entity json = Entity.entity(data, MediaType.APPLICATION_JSON_TYPE); 
    Invocation.Builder builder = target.request(MediaType.APPLICATION_JSON_TYPE); 
    return builder.post(json, String.class); 
} 
+1

をそれはほとんど同じことですJersey 2では、['Invocation.Builder'](https://docs.oracle.com/javaee/7/api/javax/ws/rs/client/Invocation.Builder.html)のjavadocを見てください。 –

+0

@rgettmanにはかなり良い答えがあります。質問を解決するなら、それを受け入れるべきです。 –

答えて

6

をジャージー2.0+では、あなたがクライアントAPIを送信することを要求してすることができますmanipulate the headersClientRequestFilterのカスタム実装を登録することができます:ここでは

は、私が使用しているコードです。

メソッドに渡されるClientRequestContextパラメータを使用して、ヘッダーを操作できます。 getHeaders() methodputあなたのヘッダーができるMultivaluedMapを返します。

newClientに電話する前に、にregisterのカスタムClientRequestFilterを入力してください。

3

Jersey 2.xクライアントにほんの少しのヘッダーを追加したい場合は、リクエストが次のように送信されたときに追加するだけです。

webTarget.request().header("authorization":"bearer jgdsady6323u326432").post(..)... 
0

あなたは、ヘッダーの群れがある場合)、ヘッダ(WebTarget.request下MultivaluedMap <文字列、オブジェクト>は(もあります、プラディープが言ったことに追加するには:

MultivaluedMap head = new MultivaluedHashMap(); 

head.add("something-custom", new Integer(10)); 
head.add("Content-Type", "application/json;charset=UTF-8"); 

builder.headers (head); // builder from Joshua's original example 
関連する問題