Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/334.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Jersey REST:将标题从映射导入WebResource实例_Java_Rest_Jersey_Webresource - Fatal编程技术网

Java Jersey REST:将标题从映射导入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(多值映射头映射) 为了解决这个问

我试图接收任意一组HTTP头并将其转储到WebResource实例中。WebResource接口允许用户使用查询参数来执行此操作,因为它提供了

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