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