web-dev-qa-db-de.com

Jersey 2.x: So fügen Sie Header in RESTful Client hinzu

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);
}
10
Joshua Kissoon

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 ClientConfigregistrieren , bevor Sie newClient aufrufen.

config.register(MyAuthTokenClientRequestFilter.class);
9
rgettman

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(..)...
8
Madura Pradeep

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
0
mojo-jojo