我正在使用 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/