2011-09-03 41 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

相关问题