Ich habe mir schon angesehen So fügen Sie Header bei einem RESTful-Aufruf mithilfe der Jersey-Client-API hinzu , dies ist jedoch für Jersey 1.x.
Wie lege ich in Jersey 2.21 einen Header-Wert (z. B. ein Autorisierungstoken) fest?
Hier ist der Code, den ich verwende:
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 und höher können Sie eine benutzerdefinierte Implementierung von ClientRequestFilter
registrieren, mit der die Kopfzeilen in der Anforderung manipuliert werden können, die von der Client-API gesendet wird.
Sie können die Header über den ClientRequestContext
-Parameter bearbeiten, der an die filter
-Methode übergeben wird. Die getHeaders()
-Methode gibt das MultivaluedMap
zurück, auf dem Sie put
Ihre Kopfzeile (n) können.
Sie können Ihr benutzerdefiniertes ClientRequestFilter
mit Ihrem ClientConfig
registrieren , bevor Sie newClient
aufrufen.
config.register(MyAuthTokenClientRequestFilter.class);
Wenn Sie nur wenige Header im Jersey 2.x-Client hinzufügen möchten, können Sie diese einfach hinzufügen, wenn die Anforderung gesendet wird.
webTarget.request().header("authorization":"bearer jgdsady6323u326432").post(..)...
Zu dem, was Pradeep gesagt hat, kommen noch Kopfzeilen hinzu (MultivaluedMap <String, Objects> unter WebTarget.request ()), wenn Sie über mehrere Header verfügen:
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