簡體   English   中英

Jersey 2.x:如何在RESTful Client上添加Headers

[英]Jersey 2.x: How to add Headers on RESTful Client

我已經看過如何使用Jersey Client API在RESTful調用上添加Headers ,但這適用於Jersey 1.x.

如何在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);
}

在Jersey 2.0+中,您可以注冊ClientRequestFilter的自定義實現,該實現可以操作客戶端API將發出的請求中的標頭

您可以通過傳遞給filter方法的ClientRequestContext參數來操作標頭。 getHeaders()方法返回可以put標題的MultivaluedMap

在調用newClient之前,可以使用ClientConfig 注冊自定義ClientRequestFilter

config.register(MyAuthTokenClientRequestFilter.class);

如果您只想在Jersey 2.x客戶端中添加少量標頭,則只需在發送請求時添加它,如下所示。

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

要添加到Pradeep所說的內容,如果你有一堆標題,那么還有標題(WebTarget.request()下的MultivaluedMap <String,Objects>:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM