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在服务器端设置的值。我已经更新了我的答案,希望能有所帮助。。。客户端术语不适用于服务器端。