webservice soap報文是xml格式交互的,當中針對特殊字符傳遞無法解析,導致數據處理失敗。
解決的方法例如以下:
1、在發送報文之前,針對報文進行base64轉碼,轉義后避免報文中含有特殊字符。
標准base64中是以%開頭的,假設存儲到數據庫中,並進行查詢sql中,會解析成通配符,這樣會報錯。
搜索后使用改進版base64進行轉碼,能夠規避該問題,詳細度娘一下吧。
此方法的缺點是,全部client都須要知道解碼的方式,否則無法解析。
2、在xml中,使用cdata標記特殊字符,這樣的方式經分析后不太好。
眼下的缺點有2,一是須要針對每一個特殊字符都轉換一下,首先是本人不知道應該在什么使用加入�<![CDATA[ ]]>,是在設置屬性值的時候,還是最后生成報文的時候;
並且使用這個的話數據中不能含有[[ ]]等字符。這樣推斷真麻煩,假設有知道這問題怎樣解決,請您不吝賜教。我也僅僅是網絡學習的。
3、還有研究什么對象的,沒太研究,請大家討論一下是什么意思:
通過Xml Document對象得到XML字符串返回給client,不能直接把XmlDocument返回給client,由於Java中的Xml Document對象,別的語言是無法正確解釋的,我們僅僅能返回XML 字符串:
public String getAllNewSpace() {
Document document = DocumentHelper.createDocument();
Element root=document.addElement( "root ");
…………………………
if (null != dataset) {
while (dataset.next()) {
Element user=root.addElement( "User ");
Element userName=user.addElement( "UserName ");
userName.setText(dataset.getString(1));
Element userId=user.addElement( "UserId ");
userId.setText (dataset.getString(2));
}
}
return document.asXML();
}