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

來源:互聯網
上載者:User

標籤:java   ext   get   使用   資料   string   

webservice soap報文是xml格式互動的,其中針對特殊字元傳遞無法解析,導致資料處理失敗。

解決辦法如下:

1、在發送報文之前,針對報文進行base64轉碼,轉義後避免報文中含有特殊字元。

標準base64中是以%開頭的,如果儲存到資料庫中,並進行查詢sql中,會解析成萬用字元,這樣會報錯。

搜尋後使用改進版base64進行轉碼,可以規避該問題,具體度娘一下吧。

此方法的缺點是,所有用戶端都需要知道解碼的方式,否則無法解析。

 

 

2、在xml中,使用cdata標記特殊字元,這種方式經分析後不太好。

目前的缺點有2,一是需要針對每個特殊字元都轉換一下,首先是本人不知道應該在什麼使用添加<![CDATA[  ]]>,是在設定屬性值的時候,還是最後產生報文的時候; 

而且使用這個的話資料中不能含有[[ ]]等字元。這樣判斷真麻煩,如果有知道這問題如何解決,請您指教。我也只是網路學習的。

 


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

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.