2011-03-01 11 views
6

मेरे पास एक साधारण पायथन स्क्रिप्ट है जो एसओएपी वेब सेवा से डेटा खींचने के लिए सूड का उपयोग करती है। यह एक मशीन पर पूरी तरह से काम करता है, लेकिन जब मैं इसे एक और एक पुराने अजगर के संस्करण (2.4.3), मैं निम्नलिखित स्टैक ट्रेस मिलता है कि करने के लिए ले जाने के:पाइथन और सूड 0.4 का उपयोग करके SAXParseException?

>>> client = suds.client.Client(url, username='xxx', password='xxx', location=service_location, cache=None) 
Traceback (most recent call last): 
File "<stdin>", line 1, in ? 
File "/home/etlsmart/lib/python2.4/site-packages/suds/client.py", line 112, in __init__ 
    self.wsdl = reader.open(url) 
File "build/bdist.linux-i686/egg/suds/reader.py", line 152, in open 
File "build/bdist.linux-i686/egg/suds/wsdl.py", line 136, in __init__ 
File "build/bdist.linux-i686/egg/suds/reader.py", line 79, in open 
File "build/bdist.linux-i686/egg/suds/reader.py", line 101, in download 
File "/home/etlsmart/lib/python2.4/site-packages/suds/sax/parser.py", line 136, in parse 
    sax.parse(source) 
File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 109, in parse 
    xmlreader.IncrementalParser.parse(self, source) 
File "/usr/lib/python2.4/site-packages/_xmlplus/sax/xmlreader.py", line 123, in parse 
    self.feed(buffer) 
File "/usr/lib/python2.4/site-packages/_xmlplus/sax/expatreader.py", line 220, in feed 
    self._err_handler.fatalError(exc) 
File "/usr/lib/python2.4/site-packages/_xmlplus/sax/handler.py", line 38, in fatalError 
    raise exception 
xml.sax._exceptions.SAXParseException: <unknown>:18:2: mismatched tag 

मैं विभिन्न संबंधित को शामिल त्रुटियों देखा है कैश, लेकिन यह मुद्दा नहीं प्रतीत होता है। मैंने कैश और/tmp/suds को अक्षम कर दिया है केवल किसी भी मामले में एक संस्करण फ़ाइल निहित है।

क्या यह संभवतः पाइथन संस्करण से संबंधित है या क्या कुछ और स्पष्ट है कि मुझे कोशिश करनी चाहिए?

+0

ठीक है, मैंने पायथन को 2.7.1 में अपग्रेड कर दिया है और उसी त्रुटि को प्राप्त किया है, इसलिए यह पर्यावरण में कुछ और है। किसी भी सुझाव को देखने के लिए सबसे सराहना की जाएगी। – zenzic

+2

ठीक है, इसलिए मुझे समस्या मिली है और यह मेरे हिस्से पर मूर्खता और बुरी मान्यताओं का संयोजन था (यदि दोनों के बीच वास्तव में कोई अंतर है)। जब मैं दूसरे बॉक्स में चला गया तो यह एक अलग नेटवर्क सेगमेंट पर था। इसके कारण, वेब सर्वर से बात करने की बजाय, मैं फ़ायरवॉल से बात कर रहा था जो मुझे प्रमाणित करने के लिए कह रहा था। मैंने इसे डीबगर में कदम से पाया, लेकिन किसी को भी ऐसी ही समस्या होने के लिए, आप एक्सएमएल/sax/xmlreader.py में लाइन 121 के बाद 'प्रिंट बफर' जैसे कुछ कर सकते हैं, यह सुनिश्चित करने के लिए कि यह अच्छी तरह से बनाई गई एक्सएमएल है। – zenzic

उत्तर

5

मुझे एक ही समस्या थी। सर्वर ने SOAP के बजाय HTML का जवाब दिया है।

एंडपॉइंट ने त्रुटि के HTML संदेश का जवाब दिया है, एसओएपी एक्सएमएल नहीं। किसी कारण से, एसयूडीएस का कहना है, "मैं इसे पार्स नहीं कर सकता। हल्प!" इसके बजाय "मैं इस जवाब को पार्स नहीं कर सकता: < यहां जवाब दें>", यहां तक ​​कि DEBUG लॉग स्तर के साथ भी।

मिले कि suds.reader में poking, एक डिबगर का उपयोग कर: content पर

/usr/lib/python2.6/site-packages/suds/reader.py in download(self, url) 
    100   content = ctx.document 
    101   sax = Parser() 
--> 102   return sax.parse(string=content) 
    103 
    104  def cache(self): 

देखो और अगर इसकी एक सोप एक्सएमएल देखते हैं।

शुभकामनाएं।

+7

यहां वही समस्या है। विशेष रूप से, मैं एक एसओएपी एंडपॉइंट यूआरएल के अंत में "डब्लूएसडीएल" को जोड़ना भूल गया, जिसने आपको एसओएपी एक्सएमएल के बजाय एचटीएमएल वापस करने का कारण बताया, जैसा कि आपने कहा था। – Cerin

+0

मैं इस समस्या में लगातार चल रहा हूं। WSDL फ़ाइल को स्थानीय रूप से सहेजने के बाद अंततः समस्या दूर हो गई और इसे 'फ़ाइल:' यूआरआई के साथ संदर्भित किया गया। यह माना जाता है कि यह डब्लूएसडीएल के पूरे बिंदु को हरा देता है और यह सभी के लिए एक विकल्प नहीं हो सकता है लेकिन यह मेरे उपयोग के मामले के लिए एक स्वीकार्य समाधान है। – iruvar

+1

यह तब भी हो सकता है यदि उपयोगकर्ता अधिकृत नहीं है। – Nemo

संबंधित मुद्दे