http post 发送xmlstr的时候特殊符号都被转换成%3C%3了

热爱生活~~~ 2019-01-03 11:10:54
http post 发送xmlstr如下

//要发送的xmlstr
<?xml version="1.0" encoding="UTF-8"?><InterBOSS><SvcCont><![CDATA[<?xml version="1.0" encoding="UTF-8"?><AdditionInfo><ProductID>8373042fd87b012edac59cb5189cd1c4</ProductID><UserData><MobNum>13800138014</MobNum><UserPackage>999932110900068042</UserPackage></UserData></AdditionInfo>]]></SvcCont></InterBOSS>

我格式都设置utf-8

post.addHeader("content-Type", "multipart/form-data;charset=utf-8");
//post.addHeader("content-Type", "application/x-www-form-urlencoded");
List<NameValuePair> params = new ArrayList<NameValuePair>();
//发起叠加订购
try {
//params.add(new BasicNameValuePair("xmlhead", new String(YiDongXML.mapToXmlHeadRequest(maphead).getBytes("utf-8"),"utf-8")));
params.add(new BasicNameValuePair("xmlbody", new String(YiDongXML.mapToXmlBodyOverlayRequest(mapbody).getBytes("utf-8"),"utf-8")));
System.out.println("utf-8================="+new String(YiDongXML.mapToXmlHeadRequest(maphead).getBytes("utf-8"),"utf-8"));
System.out.println("utf-8================="+new String(YiDongXML.mapToXmlBodyOverlayRequest(mapbody).getBytes("utf-8"),"utf-8"));
}catch (Exception e){}
try {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params,"utf-8");
post.setEntity(entity);
// 4. 执行请求并处理响应
CloseableHttpResponse responsess = httpClient.execute(post);

但是接收的时候特殊字符还是被转成%3D等

%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%0A%3CInterBOSS%3E%3CSvcCont%3E%3C%21%5BCDATA%5B%3C%3Fxml+version%3D%221.0%22+encoding%3D%22UTF-8%22%3F%3E%3CAdditionInfo%3E%3CProductID%3E8373042fd87b012edac59cb5189cd1c4%3C%2FProductID%3E%3CUserData%3E%3CMobNum%3E13800138014%3C%2FMobNum%3E%3CUserPackage%3E999932110900068042%3C%2FUserPackage%3E%3C%2FUserData%3E%3C%2FAdditionInfo%3E%5D%5D%3E%3C%2FSvcCont%3E%3C%2FInterBOSS%3E

请问有没有大佬知道这个要怎么解决吗?只能在发送方这边解决
...全文
615 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
热爱生活~~~ 2019-01-04
  • 打赏
  • 举报
回复
引用 4 楼 鸣鸣Amadues 的回复:
引用 2 楼 wxb_hz 的回复:
[quote=引用 1 楼 鸣鸣Amadues 的回复:] 你不要URL上面发送,那里是会转义的。
那要怎么发送?使用文件的形式?流?
URL一般是用来定位的,实际数据一般是放在Body里比较好,然后接收的时候decode。 如果你要放在URL里,接收的时候再转义回来,找一下相关的库。还有不同的工具,对URL的长度是有限制的,所以实际数据放在URL也可能有潜在的问题。[/quote]感谢你的回答,我在网上找到了解决的方法,https://stackoverflow.com/questions/10986949/httpclient-urlencodedformentity-xml-encode-namevaluepair
鸣鸣Amadues 2019-01-03
  • 打赏
  • 举报
回复
引用 2 楼 wxb_hz 的回复:
引用 1 楼 鸣鸣Amadues 的回复:
你不要URL上面发送,那里是会转义的。
那要怎么发送?使用文件的形式?流?
URL一般是用来定位的,实际数据一般是放在Body里比较好,然后接收的时候decode。 如果你要放在URL里,接收的时候再转义回来,找一下相关的库。还有不同的工具,对URL的长度是有限制的,所以实际数据放在URL也可能有潜在的问题。
夜雨恋星辰 2019-01-03
  • 打赏
  • 举报
回复
接收的时候decode一下
热爱生活~~~ 2019-01-03
  • 打赏
  • 举报
回复
引用 1 楼 鸣鸣Amadues 的回复:
你不要URL上面发送,那里是会转义的。
那要怎么发送?使用文件的形式?流?
鸣鸣Amadues 2019-01-03
  • 打赏
  • 举报
回复
你不要URL上面发送,那里是会转义的。

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧