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);
}
To add to what Pradeep said, there's also headers(MultivaluedMap < String, Objects> under WebTarget.request() if you have a gaggle of headers:
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 thefilter
method. ThegetHeaders()
method returns theMultivaluedMap
on which you canput
your header(s).You can register your custom
ClientRequestFilter
with yourClientConfig
before you callnewClient
.If you want to add only few headers in Jersey 2.x client, you can simply add it when request is sending as follows.