Jersey REST:将Map中的标头导入WebResource实例

Dav*_*ram 3 java rest webresource jersey

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

        webResource.queryParam(key, value)
Run Code Online (Sandbox Code Playgroud)

        webResource.queryParams(MultivaluedMap<String, String> queryMap)
Run Code Online (Sandbox Code Playgroud)

但是,API不允许对标题进行相同的操作.只有一个功能,

            webResource.header(key, value)
Run Code Online (Sandbox Code Playgroud)

允许一个人为HTTP标头输入一个键值对,但没有函数

 webResource.headers(MultivaluedMap<String, String> headersMap)
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我尝试从WebResource检索构建器并迭代它,逐个添加头

        WebResource.Builder builder = webResource.getRequestBuilder();
    for(Map.Entry<String, String> headersMapEntry : headersMap.entrySet()){
        builder = builder.header(
                       headersMapEntry.getKey(), headersMapEntry.getValue());
    }
Run Code Online (Sandbox Code Playgroud)

但它似乎没有解决我的问题.

有没有人知道如何使用Jersey进行解决方法,以便我可以将任意地图转储到我的WebResource的标题中?

谢谢,大卫

Dav*_*ram 5

事实证明,解决它的唯一方法是首先使用getRequestBuilder()从webResource中提取requestBuilder,然后使用requestBuilder构建并执行其余的请求.