Java 泽西岛客户抛出;无法使用不可重复的请求实体重试请求。”;在代理上执行POST时

Java 泽西岛客户抛出;无法使用不可重复的请求实体重试请求。”;在代理上执行POST时,java,jersey,jersey-2.0,jersey-client,Java,Jersey,Jersey 2.0,Jersey Client,下面我将使用Jersey 2.25通过ApacheConnector代理执行POST请求。由于代理,如果我忽略配置: config.property(ClientProperties.REQUEST_ENTITY_PROCESSING, RequestEntityProcessing.BUFFERED); 我将获得由以下原因引起的错误:org.apache.http.client.NonRepeatableRequestException:无法使用不可重复的请求实体重试请求。 问题:用Jers

下面我将使用Jersey 2.25通过ApacheConnector代理执行POST请求。由于代理,如果我忽略配置:

config.property(ClientProperties.REQUEST_ENTITY_PROCESSING, RequestEntityProcessing.BUFFERED);
我将获得由以下原因引起的错误
:org.apache.http.client.NonRepeatableRequestException:无法使用不可重复的请求实体重试请求。

问题:用Jersey 2处理代理配置的正确方法是什么?对我来说,我的解决方案看起来像一堆乱七八糟的东西

package JerseyTest.one;

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.Invocation.Builder;
import javax.ws.rs.core.MediaType;

import org.glassfish.jersey.apache.connector.ApacheConnectorProvider;
import org.glassfish.jersey.client.ClientConfig;
import org.glassfish.jersey.client.ClientProperties;
import org.glassfish.jersey.client.RequestEntityProcessing;

public class Requester {
    public static String getPostResponseInOne(final String url, final String json) {
        final ClientConfig config = new ClientConfig();
        config.connectorProvider(new ApacheConnectorProvider());
        config.property(ClientProperties.PROXY_URI, "http://proxyurl:8080");
        config.property(ClientProperties.PROXY_USERNAME,"michael");
        config.property(ClientProperties.PROXY_PASSWORD,"secret");
        config.property(ClientProperties.REQUEST_ENTITY_PROCESSING, RequestEntityProcessing.BUFFERED);

        final Client client = ClientBuilder.newClient(config);

        final Builder builder = client.target(url).request(MediaType.APPLICATION_JSON);
        final String response = builder.post(Entity.json(json), String.class);
        return response;
    }
}

看起来像只虫子。实际上,这个布尔配置参数的作用是,它为处理请求所需的
BufferedHttpEntity
创建一个新的字节数组


您可以在Zersey-apache-connector-2.22.4.jar的类
ApacheConnector
中的
方法getUriHttpRequest(…)

中找到该代码。我在非代理kerberos/SPNEGO客户机上收到此错误。添加您注意到的配置属性为我解决了问题。