don*_*nea 32 java apache-httpclient-4.x
我正在使用apache-httpclient-4.3.我会分析一个http请求,特别是查询字符串参数,但是
@Deprecated
public HttpParams getParams()
Deprecated. (4.3) use constructor parameters of configuration API provided by HttpClient
Run Code Online (Sandbox Code Playgroud)
我不确定这意味着什么.我应该使用一些配置API的构造函数参数(那是什么?HostConfiguration不再作为类提供).但是在构建阶段我直接通过url传递查询参数:
HttpGet request = new HttpGet("http://example.com/?var1=value1&var2=value2");
Run Code Online (Sandbox Code Playgroud)
我找不到从请求对象中读回参数(var1,var2)的方法,而不使用不推荐使用的方法,这对于从对象获取属性应该很简单.
vza*_*llo 37
您可以使用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<NameValuePair> params = builder.getQueryParams();
Run Code Online (Sandbox Code Playgroud)
我认为你对getParams()来自客户端或HttpMethod 的方法有点困惑,getParams()不返回URL参数或类似的东西,返回客户端参数,如连接超时,代理,cookie等等
在4.3.2之前,您可以使用该getParams()方法(现在不建议使用)将参数设置到客户端,在4.3.2之后,您可以使用以下方法通过RequestConfig类设置请求参数Builder
Builder requestConfigBuilder = RequestConfig.custom();
requestConfigBuilder.setConnectionRequestTimeout(1000).setMaxRedirects(1);
Run Code Online (Sandbox Code Playgroud)
然后设置为HttpMethod唯一(不像之前的客户端)
request.setConfig(requestConfigBuilder.build());
Run Code Online (Sandbox Code Playgroud)
更新:
如果要从HttpGet或HttPost请求对象获取URI参数,可以使用URIBuilder相同的方式
HttpGet request = new HttpGet("http://example.com/?var=1&var=2");
URIBuilder newBuilder = new URIBuilder(request.getURI());
List<NameValuePair> params = newBuilder.getQueryParams();
Run Code Online (Sandbox Code Playgroud)