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

commons httpclient-将查询字符串参数添加到GET / POST请求

南门正业
2023-03-14
问题内容

我正在使用Commons HttpClient对Spring servlet进行http调用。我需要在查询字符串中添加一些参数。因此,我执行以下操作:

HttpRequestBase request = new HttpGet(url);
HttpParams params = new BasicHttpParams();
params.setParameter("key1", "value1");
params.setParameter("key2", "value2");
params.setParameter("key3", "value3");
request.setParams(params);
HttpClient httpClient = new DefaultHttpClient();
httpClient.execute(request);

但是,当我尝试使用读取servlet中的参数时

((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest().getParameter("key");

返回null。实际上parameterMap是完全空的。当我在创建HttpGet请求之前将参数手动添加到url时,该参数在servlet中可用。当我使用附加了queryString的URL从浏览器中访问servlet时也是如此。

这是什么错误?在httpclient 3.x中,GetMethod具有setQueryString()方法来追加查询字符串。4.x中的等效项是什么?


问题答案:

这是使用HttpClient 4.2及更高版本添加查询字符串参数的方法:

URIBuilder builder = new URIBuilder("http://example.com/");
builder.setParameter("parts", "all").setParameter("action", "finish");

HttpPost post = new HttpPost(builder.build());

结果URI看起来像:

http://example.com/?parts=all&action=finish


 类似资料:
  • 我正在使用Swashbuckle(C#的招摇)与我的Web API。我有几个返回列表的 GET endpoint,我允许用户将每页和页面参数添加到 QueryString 中 例如:http://myapi.com/endpoint/?page=5 我看到 swagger 确实支持“查询”中的参数,但我如何让 Swashbuckle 做到这一点? 我在其中一条评论中提到,我通过创建一个自定义属性来

  • 问题内容: 我是Java新手,所以我几乎不需要帮助 我有 我想向此数组(脚本)添加新的字符串(string1,string2)作为示例 我想在以后的阶段中不添加新字符串 我该怎么办? 问题答案: 您无法在Java中调整数组的大小。 声明数组的大小后,它将保持固定。 相反,您可以使用具有动态大小的对象,这意味着您无需担心其大小。如果数组列表的大小不足以容纳新值,则它将自动调整大小。

  • 我试图以以下格式提出API请求: 如何使用组件查询字符串参数执行此操作? 由于重复数组键,上述方法不起作用? 我也尝试过:

  • 问题内容: 使用javascript,如何将查询字符串参数添加到url(如果不存在)或如果存在,则更新当前值?我正在使用jquery进行客户端开发。 问题答案: 我编写了以下函数来实现我想要实现的功能:

  • 我从客户端发送了以下查询字符串参数 在REST服务器中,我如何接收上述格式并正确分配给每个类别? 更新1 参数的值为 {_=[1437904506062],{“take”:75,“skip”:0,“page”:1,“pageSize”:75、“filter”:{“logic”:“and”,“filters”:〔{“field”:“prodCode”,“operator”:“eq”,“value”:

  • 我有一个查询字符串,可以是: 编辑:参数值的长度可以大于2 有人知道在String.ReplaceAll([regex],[replace])中使用什么好的regex表达式吗?