httpclient.getparams()已弃用我应该用什么来代替?

8ulbf1ek  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(1013)

我使用的是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)的方法,这些方法应该很简单,可以从对象获取属性。

8mmmxcuj

8mmmxcuj1#

可以使用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();

我想你对这个问题有点困惑 getParams() 方法或httpmethod, getParams() 不返回url参数或类似的内容,返回客户端参数,如连接超时、代理、cookies。。。等
在4.3.2之前,您可以使用 getParams() 方法(现在已弃用),在4.3.2之后,可以通过 RequestConfig 使用 Builder ```
Builder requestConfigBuilder = RequestConfig.custom();
requestConfigBuilder.setConnectionRequestTimeout(1000).setMaxRedirects(1);

然后设置为 `HttpMethod` 仅限(不适用于以前的客户)

request.setConfig(requestConfigBuilder.build());

更新:
如果您想从 `HttpGet` 或者 `HttPost` 请求对象可以使用 `URIBuilder` 以同样的方式

HttpGet request = new HttpGet("http://example.com/?var=1&var=2");

URIBuilder newBuilder = new URIBuilder(request.getURI());
List params = newBuilder.getQueryParams();

相关问题