如何从Response.class中获取资源URI路径/位置?当我使用Apache CXF客户端API调用我的restful服务时:
Response res = resource.post(object);
我回来了JAX-RS Response类型。 CXF并不像Jersey或RestEasy那样自己实现Response。那么如何从Response.class中获取我创建对象的URI?
在泽西岛,我正在处理ClientResponse.class。在那里我可以用:
处理 res.getLocation();
RestEasy也有ClientResponse.class,我可以处理像泽西那样的问题。
答案 0 :(得分:4)
Jersey ClientResponse从标题中获取Location
:
/**
* Get the location.
*
* @return the location, otherwise <code>null</code> if not present.
*/
public URI getLocation() {
String l = getHeaders().getFirst("Location");
return (l != null) ? URI.create(l) : null;
}
JAX-RS响应通过getMetadata()
提供标题信息:
public MultivaluedMap<String, Object> getMetadata() {
if (headers != null)
return headers;
headers = new OutBoundHeaders();
for (int i = 0; i < values.length; i++)
if (values[i] != null)
headers.putSingle(ResponseBuilderHeaders.getNameFromId(i), values[i]);
Iterator i = nameValuePairs.iterator();
while (i.hasNext()) {
headers.add((String)i.next(), i.next());
}
return headers;
}
所以我会尝试的是:
response.getMetadata().getFirst("Location");
(如果这不起作用,则打印元数据内容。也许密钥有另一个名称。)