当前位置: 首页 > 面试题库 >

HttpClient.getParams()已弃用。我应该怎么用呢?

花和宜
2023-03-14
问题内容

我正在使用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<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());

更新:

如果要从HttpGetHttPost请求对象获取URI参数,则可以URIBuilder按相同方式使用

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

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


 类似资料:
  • 原始关闭原因未解决 既然getToken()已弃用,我想知道获得Firebase令牌以发送消息推送的正确方法是什么。

  • 问题内容: Spring 3.2中不推荐使用JdbcTemplate中的queryforInt / queryforLong方法。我找不到使用这些方法替换现有代码的最佳实践的理由或理由。 典型方法: 确定以上方法需要重新编写如下: 显然,这种弃用使JdbcTemplate类更简单(或者呢?)。QueryForInt一直是一种便捷的方法(我想),并且已经存在了很长时间。为什么将其删除。结果,代码变得

  • 问题内容: 我在jquery文档中看到live()已被弃用。有直接替换功能吗? 问题答案: ;替换。 ;替换。 ;替换。

  • 在Spring 3.2中,JdbcTemplate中的queryforInt/queryforLong方法被弃用。我不知道为什么或者什么是使用这些方法替换现有代码的最佳实践。 典型方法: OK以上方法需要重写如下: 显然,这种不赞成使JdbcTemplate类更简单(或者是这样吗?)。QueryForInt一直是一种方便的方法(我想),而且已经存在很长时间了。为什么要删除它。因此,代码变得更加复杂

  • 问题内容: 今天,我决定将我的android应用程序从Java转换为Kotlin!:)但是,当我输入以下内容时,我感到非常惊讶: 然后Android Studio告诉我:“’getActionView(MenuItem!):View!’ 已弃用。Java中已弃用“ 因此,在问您解决方案之前,我先问谷歌解决方案是什么,我相信我找到了解决方案:“直接使用getActionView()”。 所以我像这样

  • 目前我正在开发一个带有三个菜单项的底部导航栏的应用程序。我曾使用来单击项目。但现在我面临的问题是该方法已贬值。 应用程序语言:Java 问题:“setOnNavigationItemSelectedListener(com.google.android.material.bottomnavigation.BottomNavigationView.OnNavigationItemSelectedLi