webservice傳遞特殊字符時的解決的方法


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();
     }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM