Java Jersey REST:将标题从映射导入WebResource实例
我试图接收任意一组HTTP头并将其转储到WebResource实例中。WebResource接口允许用户使用查询参数来执行此操作,因为它提供了Java Jersey REST:将标题从映射导入WebResource实例,java,rest,jersey,webresource,Java,Rest,Jersey,Webresource,我试图接收任意一组HTTP头并将其转储到WebResource实例中。WebResource接口允许用户使用查询参数来执行此操作,因为它提供了 webResource.queryParam(key, value) 及 它允许输入HTTP头的键值对,但不允许输入函数 webResource.headers(MultivaluedMap<String, String> headersMap) webResource.headers(多值映射头映射) 为了解决这个问
webResource.queryParam(key, value)
及
它允许输入HTTP头的键值对,但不允许输入函数
webResource.headers(MultivaluedMap<String, String> headersMap)
webResource.headers(多值映射头映射)
为了解决这个问题,我尝试从WebResource检索构建器并对其进行迭代,逐个添加标题
WebResource.Builder builder = webResource.getRequestBuilder();
for(Map.Entry<String, String> headersMapEntry : headersMap.entrySet()){
builder = builder.header(
headersMapEntry.getKey(), headersMapEntry.getValue());
}
WebResource.Builder=WebResource.getRequestBuilder();
对于(Map.Entry headersmappentry:headersMap.entrySet()){
builder=builder.header(
headersMapEntry.getKey(),headersMapEntry.getValue();
}
但这似乎并不能解决我的问题
有人知道我如何解决Jersey的问题,以便将任意地图转储到WebResource的标题中吗
谢谢,
David事实证明,唯一的解决方法是首先使用getRequestBuilder()从Web资源中提取requestBuilder,然后使用requestBuilder生成并执行其余的请求。因为如果检索到requestBuilder或PartialRequestBuilder,则无法触发实际请求,因此必须检索:
WebResource.Builder builder = webResource.getRequestBuilder();
WebResource.Builder已获取、发布等:
response = builder.post(ClientResponse.class, body);
这篇文章用例子更透彻地解释了这个问题和解决方案:迭代地图和单独设置标题如何解决不了问题?嘿,克里斯托弗,你的问题正是我为什么如此困难的原因。我使用上面的代码或“webResource.getRequestBuilder().header(key,value);”手动迭代,如果没有正确设置header(我检查Wireshark上发送的传出数据包),Jersey源代码中的getRequestBuilder()只不过是“return new Builder()”,这让人怀疑是否会这样做,但是如果您检查所有其他返回生成器的函数(cookie(),entity,…),它们也会使用getRequestBuilder()。没有线索。很久没用过了。虽然我记得这是一个完全的惊喜。我很想回去再看看。
WebResource.Builder builder = webResource.getRequestBuilder();
response = builder.post(ClientResponse.class, body);