webservice soap報文是xml格式交互的,其中針對特殊字符傳遞無法解析,導致數據處理失敗。
解決辦法如下:
1、在發送報文之前,針對報文進行base64轉碼,轉義后避免報文中含有特殊字符。
標准base64中是以%開頭的,如果存儲到數據庫中,並進行查詢sql中,會解析成通配符,這樣會報錯。
搜索后使用改進版base64進行轉碼,可以規避該問題,具體度娘一下吧。
此方法的缺點是,所有客戶端都需要知道解碼的方式,否則無法解析。
2、在xml中,使用cdata標記特殊字符,這種方式經分析后不太好。
目前的缺點有2,一是需要針對每個特殊字符都轉換一下,首先是本人不知道應該在什么使用添加,是在設置屬性值的時候,還是最后生成報文的時候;
而且使用這個的話數據中不能含有[[ ]]等字符。這樣判斷真麻煩,如果有知道這問題如何解決,請您指教。我也只是網絡學習的。
3、還有研究什么對象的,沒太研究,請大家討論一下是什么意思:
通過Xml Document對象得到XML字符串返回給客戶端,不能直接把XmlDocument返回給客戶端,因為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();
}
