I've already looked at How to add Headers on RESTful call using Jersey Client API , however this is for Jersey 1.x.
How do I set a header value (such as an authorization token) in Jersey 2.21?
Here is the code I'm using:
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);
}
In Jersey 2.0+, you can register a custom implementation of ClientRequestFilter
that can manipulate the headers in the request that the Client API will send out.
You can manipulate the headers via the ClientRequestContext
parameter that is passed into the filter
method. The getHeaders()
method returns the MultivaluedMap
on which you can put
your header(s).
You can register your custom ClientRequestFilter
with your ClientConfig
before you call newClient
.
config.register(MyAuthTokenClientRequestFilter.class);
如果您只想在Jersey 2.x客户端中添加少量标头,则只需在发送请求时添加它,如下所示。
webTarget.request().header("authorization":"bearer jgdsady6323u326432").post(..)...
To add to what Pradeep said, there's also headers(MultivaluedMap < String, Objects> under WebTarget.request() if you have a gaggle of headers:
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
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.