java - HttpClient.getParams() 已弃用。我应该改用什么?

标签 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

我不确定这是什么意思。我应该使用一些配置 API 的构造函数参数(那是什么?HostConfiguration 不再作为类可用)。但是在构建阶段我直接通过url传递查询参数:

HttpGet request = new HttpGet("http://example.com/?var1=value1&var2=value2");

如果不使用不推荐使用的方法,我找不到从我的 request 对象读回参数(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<NameValuePair> params = builder.getQueryParams();

我认为您对 getParams() 有点困惑。来自客户端或 HttpMethod 的方法,getParams()不返回 URL 参数或类似的东西,返回客户端参数,如连接超时、代理、cookie...等

在 4.3.2 之前,您可以使用 getParams() 为客户端设置参数方法(现已弃用),在 4.3.2 之后您可以通过 RequestConfig 设置请求参数使用 Builder 的类

Builder requestConfigBuilder = RequestConfig.custom();
requestConfigBuilder.setConnectionRequestTimeout(1000).setMaxRedirects(1);

然后设置为HttpMethod仅限(不像以前那样对客户)

request.setConfig(requestConfigBuilder.build());

更新:

如果您想从 HttpGet 获取 URI 参数或 HttPost您可以使用 URIBuilder 的请求对象以同样的方式

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

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

关于java - HttpClient.getParams() 已弃用。我应该改用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22038957/

相关文章:

java - Apache HttpClient 4.0.3 - 如何为 POST 请求设置带有 sessionID 的 cookie?

java - 我应该测试算法的确切结果还是只测试结果的某些元素?

JavaFX - 其文本字段的 ComboBox 监听器

java - 在 post 方法中上传 https url 中的文件 - java.io.IOException : Error writing to server - Java

java - HttpClient 获取状态码

Java - 我可以使用浏览器 cookie 直接访问网站上的数据吗?

java - HttpClient 请求成功并定义了超时,但没有定义就挂起

Java,如何从youtube下载视频,vget替代?

java - HWPFDocument/XWPFDocument 新行

java - Eclipselink:persistence.xml 连接到 derby glassfish 本地主机数据库(创建并填充数据库)