2011-09-03 64 views
0

使用XML更新了問題。我之前用一個驗證器檢查過它,它通過了。這個問題可能是別的。再次感謝。Google Checkout/GAE:urlfetch:XML解析器錯誤。內容在序言中不允許


您能否讓我知道下面的代碼有什麼問題?我正在使用它來提交服務器到服務器簽出API請求

我不斷收到錯誤:「錯誤解析XML;從解析器的消息是:內容是不是在序言」允許

我已經嘗試了所有的排列組合,同時還搜查網但。不能得到任何線索你及時的幫助會我堅持不勝感激

謝謝 .Ashish PS:以下base64encoded值用於驗證下面的安全性被修改,因此只是一個隨機值。

XML = "..."   
form_fields = {'XML': XML} 
form_data = urllib.urlencode(form_fields) 
result = urlfetch.fetch(url='https://sandbox.google.com/checkout/api/checkout/v2/merchantCheckout/Merchant/MERCHANT_ID',  payload= form_data, 
    method=urlfetch.POST, 
    headers={"Authorization": "Basic Kfgoijkef3fdgikneijerfererererwetfni43rfeferr=", 
          "Content-Type": "application/x-www-form-urlencoded", 
          "Accept": "application/xml;charset=UTF-8" 
      }           
) 


    XML = "<?xml version='1.0' encoding='UTF-8'?> \ 
        <checkout-shopping-cart xmlns='http://checkout.google.com/schema/2'> \ 
         <shopping-cart> \ 
         <items> \ 
          <item> \ 
          <item-name>HelloWorld 2GB MP3 Player</item-name> \ 
          <item-description>HelloWorld, the simple MP3 player</item-description> \ 
          <unit-price currency='USD'>159.99</unit-price> \ 
          <quantity>1</quantity> \ 
          </item> \ 
         </items> \ 
         </shopping-cart> \ 
         <checkout-flow-support> \ 
         <merchant-checkout-flow-support> \ 
          <shipping-methods> \ 
          <flat-rate-shipping name='SuperShip Ground'> \ 
           <price currency='USD'>9.99</price> \ 
          </flat-rate-shipping> \ 
          </shipping-methods> \ 
         </merchant-checkout-flow-support> \ 
         </checkout-flow-support> \ 
        </checkout-shopping-cart>" 
+0

聽起來好像是沒有很好地形成的XML。你是如何產生它的?尋找字符串開頭附近的雜散字符。 – bobince

+0

用我發送的XML更新。這早些時候通過了驗證器。還有一些錯誤嗎?再次感謝。 – user926385

回答

0

「內容在序言是不允許的」錯誤是當字符被XML文檔類型聲明的或非標準的字符(在HTML中是有效的)出現在XML聲明之前位於XML解析器生成的錯誤。它也可能是由用大寫字母指定編碼引起的(例如,UTF-8不正確)。

嘗試將編碼更改爲「utf-8」以查看是否修復了它。

下面的鏈接有更有趣的情況下,當這個錯誤顯示出來:

http://www.judahfrangipane.com/blog/2006/12/13/content-is-not-allowed-in-prolog/

+0

謝謝。其他意見也回答了這個問題。帖子末尾的鏈接非常有幫助。上密切關注,有 'XML = <?XML版本=' 1.0' 編碼= 'UTF-8'?>」中,而不是接收到的XML只是 '<?XML版本=' 1.0' 編碼= 'UTF-8' ?>」。所以有額外的'XML =',因此錯誤。再次感謝大家回答。非常感謝。 – user926385

0

您看到的錯誤消息是一個非常通用的錯誤消息,說明您給XML解析器的內容不是格式良好的XML。這可能意味着該文件爲空,或者以無法識別的字節順序標記開始,或者以「<」以外的內容開始。

+0

感謝您的回覆。欣賞它。用我發送的XML更新。這早些時候通過了驗證器。還有一些錯誤嗎?再次感謝。 – user926385

相關問題