Java HttpEntityEnclosingRequestBase和HttpOptions

Java HttpEntityEnclosingRequestBase和HttpOptions,java,httpclient,Java,Httpclient,我需要能够在期权调用上设置实体,但看起来HttpClient不支持它。HttpPost和HttpPut扩展自HttpEntityEnclosingRequestBase,而HttpOptions不扩展 有人知道原因吗,或者有没有办法解决这个问题?各州 如果选项请求包括由 存在内容长度或传输编码,然后是媒体类型 必须由内容类型字段指示。虽然本规范 不定义这样一个主体的任何用途,即HTTP的未来扩展 可以使用选项正文对 服务器不支持这种扩展的服务器可能会放弃 请求机构 ApacheHTTP客户机团队

我需要能够在期权调用上设置实体,但看起来HttpClient不支持它。HttpPost和HttpPut扩展自HttpEntityEnclosingRequestBase,而HttpOptions不扩展

有人知道原因吗,或者有没有办法解决这个问题?

各州

如果选项请求包括由 存在内容长度或传输编码,然后是媒体类型 必须由内容类型字段指示。虽然本规范 不定义这样一个主体的任何用途,即HTTP的未来扩展 可以使用选项正文对 服务器不支持这种扩展的服务器可能会放弃 请求机构


ApacheHTTP客户机团队可能认为没有任何用例可以保证选项请求中的请求体。

如果有人需要,下面是如何为HttpClient实现的

@Autowired
HttpClient httpClient;

public HttpResponse execute(String url, String json, String accessToken) {
    HttpOptionsWithBody httpOptionsWithBody = new HttpOptionsWithBody(url);
    httpOptionsWithBody.setEntity(new StringEntity(json));
    return httpClient.execute(httpOptionsWithBody);
}

private static class HttpOptionsWithBody extends HttpEntityEnclosingRequestBase {

    public static final String METHOD_NAME = "OPTIONS";

    @Override
    public String getMethod() {
        return METHOD_NAME;
    }

    public HttpOptionsWithBody(final String uri) {
        super();
        setURI(URI.create(uri));
    }
}

我是从

那里得到这个想法的,至少有一个面向公众的API在选项调用中有一个主体。我正在想办法解决这个问题。找到了一个解决方案,如果我们只使用HttpClient,它就可以工作,但我们有jersey在上面。