今天处理需求时遇到一个有意思的点,问题如下:
当我使用参数Content-Type=application/x-www-form-urlencoded发送http请求时,对端接收正常,改成application/json则对端接收值是空。
- 经研究发现对端接收代码是通过获取request.getParameterNames()的枚举值获得参数值,该方法仅在发送方HttpURLConnection参数Content-Type=application/x-www-form-urlencoded时有效。
贴下遍历ParameterNames枚举值的通用方法:
Map<String,String> param = new HashMap<String,String>();
Enumeration<String> rnames = request.getParameterNames();
for (Enumeration<String> e = rnames ; e.hasMoreElements() ;)
{
String thisName = e.nextElement();
String thisValue = request.getParameter(thisName);
param.put(thisName, thisValue);
}
return param;
- 当发送方HttpURLConnection参数Content-Type=application/json时,需要将对端代码修改为如下样例代码:
BufferedReader br = request.getReader();
String i = "";
String msg = "";
while((i = br.readLine()) != null)
{
msg += i;
}
System.out.println(msg);