Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何从HttpMethodParams获取值_Java_Http_Spring Mvc_Http Parameters - Fatal编程技术网

Java 如何从HttpMethodParams获取值

Java 如何从HttpMethodParams获取值,java,http,spring-mvc,http-parameters,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(); PostMet

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

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);

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

我想,您将在
HttpServletRequest
HttpMethodParams
中设置的用户定义参数之间产生混淆

根据-
HttpMethodParams
的JavaDoc

此类表示HTTP协议参数的集合 适用于HTTP方法

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

如图所示,需要设置请求参数

您还必须注意所有这些类(
HttpClient
PostMethod
HttpMethodParams
等)您在客户端使用的是Apache,它只是一种方便的生成和调用HTTP端点的方法,但最终您在服务器端使用的是一个
HttpServletRequest
,并且没有特定于Apache HttpClient的系统


所以,在服务器端,您只需要使用-getHeaders()、getInHeader()、getHeaderNames()、getDateHeader()和getProtocol()等提取一个或多个命名的头。服务器端是标准化的,所以您不应该在那里看到类似-
HttpMethodParams

您必须使用HttpServletRequest发送参数

HttpMethodParams表示适用于HTTP方法的HTTP协议参数的集合。可以找到Http方法参数的列表

但是,如果要通过HttpMethodParams强制发送,可以在HttpMethodParameter的一个变量中设置参数的JSON表示形式,并使用该变量名检索其值

示例代码:

HttpMethodParams p = new HttpMethodParams();
p.setCredentialCharset("{userId":1579533296}"); 
//for loop not required
//your code
HttpMethodParams p = new HttpMethodParams();
JSONObject jsonObj = new JSONObject(p.getCredentialCharset()); 
jsonObj.get("userdId");
现在,您可以使用ObjectMapper解析JSON并获得所需的值

示例代码:

HttpMethodParams p = new HttpMethodParams();
p.setCredentialCharset("{userId":1579533296}"); 
//for loop not required
//your code
HttpMethodParams p = new HttpMethodParams();
JSONObject jsonObj = new JSONObject(p.getCredentialCharset()); 
jsonObj.get("userdId");

注意:这可能有效,但不是推荐的方法。

那么……您的意思是没有办法在服务器端获得此类参数吗?我知道我可以使用method.setParameter(key,value)在客户端设置参数,并使用getParameter(key)获取参数值,但我只是想知道是否有任何方法可以获取HttpMethodParams在服务器端设置的值。我已经更新了我的答案,希望能有所帮助。。。客户端术语不适用于服务器端。