1

如何从 Response.class 中获取资源 URI 路径/位置?当我像这样使用 Apache CXF 客户端 API 调用我的宁静服务时:

 Response res = resource.post(object);

我找回了 JAX-RS 响应类型。CXF 不像 Jersey 或 RestEasy 那样有自己的 Response 实现。那么如何从 Response.class 中获取创建对象的 URI?

在泽西岛,我正在处理一个 ClientResponse.class。在那里我可以处理这个:

 res.getLocation(); 

RestEasy 也有一个 ClientResponse.class,我可以像 jersey 一样处理这个问题。

4

1 回答 1

4

Jersey ClientResponseLocation从标题中获取:

/**
 * 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");

(如果这不起作用打印元数据内容。也许密钥有另一个名称。)

于 2012-07-17T11:01:12.737 回答