PHP XML error parsing SOAP payload on line 1

來源:互聯網
上載者:User

WebService,想必大家都比較熟悉,是由“服務提供者”向“服務調用方”提供服務的一種方式。裡面有幾項關鍵的技術:

XML:描述資料的標準方法
SOAP:簡易物件存取通訊協定 (SOAP),用於資訊交換
WSDL:Web服務描述語言
UDDI:通用描述、發現與整合,它是一種獨立於平台的,基於XML語言的用於在互連網上描述商務的協議。

  SOAP預設傳輸的都是UTF-8的編碼,這也決定了預設情況下WebService用的也是UTF-8編碼。

  現在維護的那個項目是一個PHP項目,編碼用的全是GBK,在調用自身提供的WebService方法時,就會遇到編碼問題了。PHP頁面調用WebService,而這個WebService又調用的是另一個調用COM組件的PHP類。大概情境就是這樣。 複製代碼 代碼如下:PHP頁面(GBK) -> WebService(UTF-8) -> PHP類(GBK)

  在未遇到問題之前,一切都是風平浪靜的,就這樣過了很多年。有一天,公司收購了其它公司,為了整合服務,使用者資訊也整合到一起了,原公司所有使用者的帳戶都是由英文字元加數字組成的,而收購的這個公司沒有做這樣的限定,帳戶有漢字的情況。整合之後,問題出現了,“error in msg parsing: XML error parsing SOAP payload on line 1: Invalid character [detail]”!

  PHP剛接觸不久,不是甚熟,而且NetBeans的調試灰常不好整。所以就開啟VS,引用WebService,開始測試。返回的結果,找不到使用者,而且是亂碼,OK,看了一下之後,由於WebService的UTF-8編碼傳給PHP類時,編碼不一致所導致!轉換為GBK再傳過去,收到資料後,找到使用者,但還是亂碼。將返回過來的資料再次轉換為UTF-8之後,一切OK!VS下測試一切正常!上測試機!開始測試!開啟之後,亂碼!仍然是“error in msg parsing: XML error parsing SOAP payload on line 1: Invalid character [detail]”囧!

  靜下心來,繼續分析!應該是PHP頁面調用WebService時所導致!VS下面的那個測試頁面是UTF-8的,他們之間沒有問題,但PHP的這個頁面是GBK的。再次修改後,一切又恢複平靜了。 複製代碼 代碼如下:調用:PHP頁面,參數轉換為UTF-8 -> WebService,轉換為GBK後 -> PHP類
返回:PHP類 -> WebService,收到後轉化為UTF-8 -> PHP頁面,轉換為GBK

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.