java - 如何从 HttpMethodParams 获取值

标签 java http spring-mvc http-parameters

在客户端我使用以下代码:

HashMap<String, String> paramMap = new HashMap<>();
paramMap.put("userId", "1579533296");
paramMap.put("identity", "352225199101195515");
paramMap.put("phoneNum", "15959177178");
HttpClient client = new HttpClient();
PostMethod method = new PostMethod("http://localhost:8088/requestTest");
HttpMethodParams p = new HttpMethodParams();
for (Map.Entry<String, String> entry : paramMap.entrySet()) {
    p.setParameter(entry.getKey(), entry.getValue());
}
method.setParams(p);
client.executeMethod(method);

我的服务器端代码是这样的:

@RequestMapping("/requestTest")
public void requestTest(HttpServletRequest request) throws IOException {
   String userId = request.getParameter("userId");
   String identity= request.getParameter("identity");
   String phoneNum= request.getParameter("phoneNum");
   System.out.println(userId+identity+phoneNum);
}

但是我得到的userId、identity、phoneNum都是空值,那么如何获取它们的值呢?我知道我可以使用 method.setParameter(key,value) 在客户端设置参数并使用 getParameter(key) 获取参数值,但我只是好奇是否有任何方法可以获取服务器端设置的值通过 HttpMethodParams。

最佳答案

我认为,您对 HttpServletRequestHttpMethodParams 中设置的用户定义参数感到困惑。

根据 JavaDoc - HttpMethodParams

This class represents a collection of HTTP protocol parameters applicable to HTTP methods.

这些是特定于该 HTTP 方法 ( see this ) 的预定义参数,与 - HttpServletRequest 参数无关。

请求参数需要设置如图here

您还必须注意,您在客户端使用的所有这些类(HttpClientPostMethodHttpMethodParams 等)均来自Apache 只是一种生成和调用 HTTP 端点的便捷方法,但最终您在服务器端将拥有一个 HttpServletRequest ,并且该系统不是特定于 Apache HttpClient 的。

因此,您在服务器端所获得的只是使用 getHeaders() 、 getIntHeader() 、 getHeaderNames() 、 getDateHeader() 、 getProtocol() 等提取一个或多个命名 header 。服务器端是标准化的,因此您不应该在那里看到类似 - HttpMethodParams 的内容。

关于java - 如何从 HttpMethodParams 获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46190344/

相关文章:

java - Sublime Text 侧边栏突出显示已更改的行

java - Spring react : convert Flux<Wrapper<X>> to Flux<X>

spring-mvc - 一个 Controller 方法中的多个 @RequestBody 值

java - 使用 BeanUtils 忽略子类中的属性

java - 我不知道为什么 Eclipse 无法识别 java.io 库

java - JLS 6/7 的哪些更改导致以下带有集合和泛型的未经检查的代码在 Java 7 中工作?

Python virtualenv 中的 Ruby HTTP Post 请求在客户端非常慢

android - 如何连接到 Android 上的代理?

php - 我应该如何通过 AJAX 发出长 PHP 请求,定期检查状态更新,并在请求取消时关闭脚本?

Java、Spring、Apache Tiles 错误 : Could not resolve view with name 'index' in servlet with name 'dispatcher'