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


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

     }


免責聲明!

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



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