不推荐使用HttpClient.getParams()。 我该怎么用?
我正在使用apache-httpclient-4.3。 我会分析一个http请求,特别是查询字符串参数,但是
@Deprecated public HttpParams getParams() Deprecated. (4.3) use constructor parameters of configuration API provided by HttpClient
我不确定这意味着什么。 我应该使用一些配置API的构造函数参数(那是什么?HostConfiguration不再作为类提供)。 但是在构建阶段我直接通过url传递查询参数:
HttpGet request = new HttpGet("http://example.com/?var1=value1&var2=value2");
我找不到从请求对象中读回参数( var1,var2 )的方法,而不使用不推荐使用的方法,这对于从对象获取属性应该很简单。
您可以使用URIBuilder对象
URIBuilder builder = new URIBuilder("http://example.com/"); builder.setParameter("var1", "value1").setParameter("var2", "value2"); HttpGet request = new HttpGet(builder.build()); // get back the url parameters List params = builder.getQueryParams();
我认为你对客户端或HttpMethod的getParams()
方法有点困惑, getParams()
不返回URL参数或类似的东西,返回客户端参数,如连接超时,代理,cookie等等
在4.3.2之前,您可以使用getParams()
方法(现在不建议使用)将参数设置到客户端,在4.3.2之后,您可以使用Builder
通过RequestConfig
类设置请求参数
Builder requestConfigBuilder = RequestConfig.custom(); requestConfigBuilder.setConnectionRequestTimeout(1000).setMaxRedirects(1);
然后设置为HttpMethod
(不像以前那样对客户端)
request.setConfig(requestConfigBuilder.build());
更新:
如果您想从HttpGet
或HttPost
请求对象获取URI参数,您可以以相同的方式使用URIBuilder
HttpGet request = new HttpGet("http://example.com/?var=1&var=2"); URIBuilder newBuilder = new URIBuilder(request.getURI()); List params = newBuilder.getQueryParams();
- Apache HttpClient CoreConnectionPNames.CONNECTION_TIMEOUT什么都不做?
- javax.net.ssl.SSLPeerUnverifiedException:peer未经过身份validation的问题
- Peer未在java中进行身份validation
- 如何在multithreading操作中使用HttpAsyncClient?
- java filechannel cpu用法随着时间的推移而增长
- 使用Apache HttpClient的Java HTTPPost请求
- 如何从apache httpclient 4中禁用默认请求标头?
- javax.net.ssl.SSLPeerUnverifiedException:主机名与对等方提供的证书主题不匹配
- 带有进度的HttpClient Post和MultipartEntityBuilder