Jersey 2.x:如何在 RESTful 客户端上添加 Headers
Jersey 2.x: How to add Headers on RESTful Client
我已经看过 How to add Headers on RESTful call using Jersey Client API,但这是针对泽西 1.x 的。
如何在 Jersey 2.21 中设置 header 值(例如授权令牌)?
这是我使用的代码:
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);
}
在 Jersey 2.0+ 中,您可以在客户端 API 发出的请求中注册 ClientRequestFilter
that can manipulate the headers 的自定义实现。
您可以通过传递给 filter
方法的 ClientRequestContext
参数来操作 headers。 getHeaders()
method returns MultivaluedMap
你可以 put
你的 header(s).
您可以在致电 newClient
之前使用您的 ClientConfig
register 您的自定义 ClientRequestFilter
。
config.register(MyAuthTokenClientRequestFilter.class);
如果您只想在 Jersey 2.x 客户端中添加少量 headers,您可以在发送请求时简单地添加它,如下所示。
webTarget.request().header("authorization":"bearer jgdsady6323u326432").post(..)...
为了补充 Pradeep 所说的内容,还有 headers(MultivaluedMap < String, Objects> under WebTarget.request() 如果你有一群 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
我已经看过 How to add Headers on RESTful call using Jersey Client API,但这是针对泽西 1.x 的。
如何在 Jersey 2.21 中设置 header 值(例如授权令牌)?
这是我使用的代码:
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);
}
在 Jersey 2.0+ 中,您可以在客户端 API 发出的请求中注册 ClientRequestFilter
that can manipulate the headers 的自定义实现。
您可以通过传递给 filter
方法的 ClientRequestContext
参数来操作 headers。 getHeaders()
method returns MultivaluedMap
你可以 put
你的 header(s).
您可以在致电 newClient
之前使用您的 ClientConfig
register 您的自定义 ClientRequestFilter
。
config.register(MyAuthTokenClientRequestFilter.class);
如果您只想在 Jersey 2.x 客户端中添加少量 headers,您可以在发送请求时简单地添加它,如下所示。
webTarget.request().header("authorization":"bearer jgdsady6323u326432").post(..)...
为了补充 Pradeep 所说的内容,还有 headers(MultivaluedMap < String, Objects> under WebTarget.request() 如果你有一群 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