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

Jos*_*oon 11 java rest jersey jersey-2.0

我已经看过如何使用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);
}
Run Code Online (Sandbox Code Playgroud)

rge*_*man 10

在Jersey 2.0+中,您可以注册一个自定义实现ClientRequestFilter,可以操作客户端API将发出的请求中的标头.

您可以通过ClientRequestContext传递给filter方法的参数来操作标题.该getHeaders()方法返回MultivaluedMap可以在其上put的物管.

您可以注册自定义ClientRequestFilterClientConfig打电话之前newClient.

config.register(MyAuthTokenClientRequestFilter.class);
Run Code Online (Sandbox Code Playgroud)


Mad*_*eep 9

如果您只想在Jersey 2.x客户端中添加少量标头,则只需在发送请求时添加它,如下所示.

webTarget.request().header("authorization":"bearer jgdsady6323u326432").post(..)...
Run Code Online (Sandbox Code Playgroud)