2012-03-16 14 views
5

Qualcuno sa perché otterrei un "<unknown>:1:0: syntax error" da una chiamata di python suds quando la risposta appare così?Errore SUDS Python - 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> 

Ecco la traccia dello stack:?

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 

Ecco direttamente dal registro, senza alcuna menzione della errore di analisi :(

Tutte le idee

Cheers, Ben

+0

L'XML è chiaramente valido. Sei sicuro che sia una SAXParseException? Pubblica la traccia dello stack mostrandola. –

+0

pubblicato la stracktrace –

+0

L'unico suggerimento che ho è che ciò che viene passato al parser non è esattamente quello che hai postato. Lo spazio bianco aggiuntivo all'inizio del buffer potrebbe causare questo. –

risposta

3

Io invece di passare direttamente il risultato, ho seguito il seguente g e si è sbarazzato dell'errore.

sax = suds.sax.parser.Parser() 

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

s_parse = sax.parse(string=s_received) 

Invece di qualcosa di simile:

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) 

Spero che questo ha aiutato.

Problemi correlati