2012-03-16 7 views
5

¿Alguien sabe por qué me gustaría obtener una "<unknown>:1:0: syntax error" de una pitón espuma llaman cuando la respuesta se parece a esto?Python escala de malestar Error - SAXParseException

<?xml version='1.0' encoding='UTF-8'?> 
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
    <env:Body> 
    <external.bz1:reply xmlns:abn.types="uri:abn.types.asic.gov.au" xmlns:bn.types="uri:bn.types.asic.gov.au" xmlns:business.document.header.types="uri:business.document.header.types.asic.gov.au" xmlns:external.bz1="uri:external.bz1.asic.gov.au" xmlns:fss.types="uri:fss.types.asic.gov.au" xmlns:types="uri:types.asic.gov.au"> 
     <business.document.header.types:businessDocumentHeader> 
     <business.document.header.types:messageType>bnLodgeApplication</business.document.header.types:messageType> 
     <business.document.header.types:messageReferenceNumber>1</business.document.header.types:messageReferenceNumber> 
     <business.document.header.types:messageVersion>1</business.document.header.types:messageVersion> 
     <business.document.header.types:senderId>ASIC</business.document.header.types:senderId> 
     <business.document.header.types:senderType>GOVT</business.document.header.types:senderType> 
     <business.document.header.types:messageEvents> 
      <business.document.header.types:messageEvent> 
      <business.document.header.types:errorCode>00007</business.document.header.types:errorCode> 
      <business.document.header.types:serverityCode>Error</business.document.header.types:serverityCode> 
      <business.document.header.types:description>Message previously processed but no valid reponse is available</business.document.header.types:description> 
      </business.document.header.types:messageEvent> 
     </business.document.header.types:messageEvents> 
     </business.document.header.types:businessDocumentHeader> 
    </external.bz1:reply> 
    </env:Body> 
</env:Envelope> 

Aquí es el seguimiento de la pila:?

Traceback: 
File "/usr/local/lib/python2.6/dist-packages/django/core/handlers/base.py" in get_response 
    111.       response = callback(request, *callback_args, **callback_kwargs) 
File "/django_projects/ecr/businessNames/views.py" in externalBz1 
    19.  result = doExternalBz1(test) 
File "/django_projects/ecr/businessNames/models.py" in doExternalBz1 
    75.  result = client.service.externalBz1(header, body) 
File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/client.py" in __call__ 
    542.    return client.invoke(args, kwargs) 
File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/client.py" in invoke 
    602.   result = self.send(soapenv) 
File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/client.py" in send 
    643.     result = self.succeeded(binding, reply.message) 
File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/client.py" in succeeded 
    678.    reply, result = binding.get_reply(self.method, reply) 
File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/bindings/binding.py" in get_reply 
    145.   replyroot = sax.parse(string=reply) 
File "/usr/local/lib/python2.6/dist-packages/suds-0.4-py2.6.egg/suds/sax/parser.py" in parse 
    136.    sax.parse(source) 
File "/usr/lib/python2.6/xml/sax/expatreader.py" in parse 
    107.   xmlreader.IncrementalParser.parse(self, source) 
File "/usr/lib/python2.6/xml/sax/xmlreader.py" in parse 
    123.    self.feed(buffer) 
File "/usr/lib/python2.6/xml/sax/expatreader.py" in feed 
    211.    self._err_handler.fatalError(exc) 
File "/usr/lib/python2.6/xml/sax/handler.py" in fatalError 
    38.   raise exception 

Exception Type: SAXParseException at /businessNames/externalBz1/1/ 
Exception Value: <unknown>:1:0: syntax error 

Eso es directamente desde el registro, sin mención del error de análisis :(

Cualquier idea

Cheers, Ben

+0

El XML es claramente válido. ¿Estás seguro de que es una SAXParseException? Publica el seguimiento de la pila que muestra esto. –

+0

publicado stracktrace –

+0

La única sugerencia que tengo es que lo que se está pasando al analizador no es exactamente lo que ha publicado. El espacio en blanco adicional al inicio del buffer puede causar esto. –

Respuesta

3

En vez de pasar directamente el resultado, hice el followin g y se deshizo del error.

sax = suds.sax.parser.Parser() 

s_received = str(client.last_received()) # passed "client.last_received()", no error 

s_parse = sax.parse(string=s_received) 

En lugar de algo como:

x_request = eval(client.service.ListTestAccounts) 

result = x_request("1") 

sax = suds.sax.parser.Parser() 

s_result = str(result)   # passed "result", generated error 

s_parse = sax.parse(string=s_result) 

Espero que esto ayudó.