使用HttpURLConnection 连接webService时,得到的内容中“<”变成了“<”中文变成误

2399 2011-10-09 02:34:26
如题,怎么解决成正常的
...全文
848 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
a107494639 2011-10-12
  • 打赏
  • 举报
回复
觉得12楼的说法不对,含有特殊字符的数据本来就该放在CDATA里,我觉得还是编码的问题吧
aqqbjlgu 2011-10-12
  • 打赏
  • 举报
回复
别把信息放在<![CDATA[]]标签里!
2399 2011-10-12
  • 打赏
  • 举报
回复
哎,失望之极啊。
2399 2011-10-12
  • 打赏
  • 举报
回复
<![CDATA[<Response>
<UserInfoSyncToISMPResp>
<StreamingNo></StreamingNo>
<ResultCode>-113</ResultCode>
<ResultDesc>参数错误</ResultDesc>
</UserInfoSyncToISMPResp>
</Response>]]>

这是我返回的,木有看到么?先看清再回答
2399 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 softroad 的回复:]

发下HttpURLConnection请求的代码看看。
[/Quote]
用HttpURLConnection获得是木有问题的,再说对方平台调用,我们也不能修改。需要也可以发布出来
HttpURLConnection connection = null;
String soapAction = "userInfoSynSV";
String requestXML = getXML();
String serviceURL = "--------";
connection = openConnection(serviceURL, requestXML, soapAction);
InputStream input = connection.getInputStream();
StringBuffer buf = new StringBuffer();
byte[] b = new byte[1024];
int length = -1;
while ((length = input.read(b)) != -1) {
buf.append(new String(b, 0, length, "UTF-8"));
}
return buf.toString();


private static HttpURLConnection openConnection(String serviceURL,
String requestXML, String soapAction) throws Exception {
URL url = new URL(serviceURL);
URLConnection connection = url.openConnection();
String host =url.getHost();
HttpURLConnection httpConn = (HttpURLConnection) connection; // Open the
httpConn.setRequestProperty("Host", host);
httpConn.setRequestProperty("Content-Length", requestXML.length() + "");
httpConn.setRequestProperty("Content-Type", "application/soap+xml; charset=utf-8");
// httpConn.setRequestProperty("Content-Type", "text/xml; charset=utf-8");
httpConn.setRequestProperty("SOAPAction", soapAction);
httpConn.setRequestMethod("POST");
httpConn.setDoOutput(true);
httpConn.setDoInput(true); // Everything's set up; send the XML that was
OutputStream os = httpConn.getOutputStream();
os.write(requestXML.getBytes("utf-8"));
os.flush();
os.close();
return httpConn;
}
softroad 2011-10-11
  • 打赏
  • 举报
回复
发下HttpURLConnection请求的代码看看。
2399 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 softroad 的回复:]

引用 6 楼 softroad 的回复:

很明显这是编码过的,你需要解码。


我的回答有误,不好意思,看看soap请求时有没有参数设置不转义,如果没的话只能自己解析了。
[/Quote]
他们请求的我这边都可以正确获得,包括中文。但是就是我这边返回的信息,他们用HttpURLConnection获得时出现这种情况,但是我自己这边用wsdl文件生成的客户端调用是没有什么问题的
softroad 2011-10-11
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 softroad 的回复:]

很明显这是编码过的,你需要解码。
[/Quote]

我的回答有误,不好意思,看看soap请求时有没有参数设置不转义,如果没的话只能自己解析了。
softroad 2011-10-11
  • 打赏
  • 举报
回复
很明显这是编码过的,你需要解码。
thislovebyyou 2011-10-11
  • 打赏
  • 举报
回复
不会,同样关注,帮顶!
2399 2011-10-11
  • 打赏
  • 举报
回复
哎,csdn在这一块都没牛人啊
2399 2011-10-11
  • 打赏
  • 举报
回复
例如我在程序中返回这些信息:
<![CDATA[<Response>
<UserInfoSyncToISMPResp>
<StreamingNo></StreamingNo>
<ResultCode>-113</ResultCode>
<ResultDesc>参数错误</ResultDesc>
</UserInfoSyncToISMPResp>
</Response>]]>

那HttpURLConnection用得到的soap就为这样:
<?xml version="1.0" encoding="utf-8"?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><soapenv:Body><UserInfoSyncToISMPResp xmlns="http://www.mbossvsop.com.cn/vsop"><response xmlns=""><![CDATA[<Response><UserInfoSyncToISMPResp><StreamingNo></StreamingNo><ResultCode>-113</ResultCode><ResultDesc>参数错误</ResultDesc></UserInfoSyncToISMPResp></Response>]]></response></UserInfoSyncToISMPResp></soapenv:Body></soapenv:Envelope>
怎么出现这种情况
2399 2011-10-09
  • 打赏
  • 举报
回复
这不是encoding问题,都是默认的为utf-8
liuyuhua0066 2011-10-09
  • 打赏
  • 举报
回复
设置下Encoding试试

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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