在调试接口时,服务器采用tomcat,ssm架构,post发送数据时遇到一个问题,参数中加号会被转换为空格,
这个主要是url编码协议导致的,关于传输的特殊字符可以参考这篇博客 http://blog.csdn.net/scyatcs/article/details/26766437
记录一下自己解决这个问题的2个方法:
一种是利用 NameValuePair 将数据以键值对的形式中间用&分隔发送到服务端,此时在发送前需要进行urlEncoded编码,代码如下:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(uri);
HttpMessage msg = new HttpMessage(map);
httpPost.setEntity(new UrlEncodedFormEntity(msg.toList()));
第二种就是以JSONObject的形式发送
httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");
StringEntity s = new StringEntity(msg.getJsonString());
s.setContentEncoding("UTF-8");
s.setContentType("application/json");