gpt4 book ai didi

java - REST - 从响应中获取资源 URI(不是 ClientResponse)

转载 作者:行者123 更新时间:2023-11-29 03:44:45 24 4
gpt4 key购买 nike

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

 Response res = resource.post(object);

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

在 Jersey,我正在处理 ClientResponse.class。在那里我可以处理这个:

 res.getLocation(); 

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

最佳答案

Jersey ClientResponse 从 header 中获取 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() 提供 header 信息:

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

(如果这不起作用,打印元数据内容。可能 key 有其他名称。)

关于java - REST - 从响应中获取资源 URI(不是 ClientResponse),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11520609/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com