2010-06-03 16 views
5

Tôi đang sử dụng lần đầu tiên và cố gắng liên lạc với một máy chủ được lưu trữ bởi một công ty bên ngoài. Khi tôi gọi một phương thức trên máy chủ, tôi lấy lại XML này.Suds có nghĩa là gì bởi "<faultcode/> không được ánh xạ tới phần thông báo"?

<?xml version="1.0" encoding="UTF-8"?> 
<soap:Envelope 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" 
    xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <soap:Fault> 
     <faultcode>soap:Server</faultcode> 

     <faultstring>Can't use string ("") as an ARRAY ref while "strict refs" in use at /vindicia/site_perl/Vindicia/Soap/DocLitUtils.pm line 130. 
</faultstring> 
    </soap:Fault> 
    </soap:Body> 
</soap:Envelope> 

Trường hợp ngoại lệ ném là thế này:

 

    File "C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\client.py", line 538, in __call__ 
    return client.invoke(args, kwargs) 
    File "C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\client.py", line 602, in invoke 
    result = self.send(msg) 
    File "C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\client.py", line 634, in send 
    result = self.succeeded(binding, reply.message) 
    File "C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\client.py", line 669, in succeeded 
    r, p = binding.get_reply(self.method, reply) 
    File "C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\bindings\binding.py", line 157, in get_reply 
    result = self.replycomposite(rtypes, nodes) 
    File "C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\bindings\binding.py", line 227, in replycomposite 
    raise Exception(' not mapped to message part' % tag) 
Exception: 'faultcode' not mapped to message part 

Bất cứ ý tưởng tại sao bọt được ném ngoại lệ? Bất kỳ suy nghĩ về cách nó có thể được cố định?

+0

Tôi gặp vấn đề tương tự. Tìm gì không? – DanJ

+0

Không chắc chắn nguyên nhân là gì, nhưng dường như đã được cố định ở 0,4 beta. –

Trả lời

2

Tôi gặp sự cố tương tự khi cuộc gọi thành công và các cú sốc bị lỗi khi phân tích phản hồi từ ứng dụng khách. Cách giải quyết mà tôi đã sử dụng là sử dụng suds option to return raw XML và sau đó sử dụng BeautifulSoup để phân tích cú pháp phản hồi.

Ví dụ:

client = Client(url) 
client.set_options(retxml=True) 
soapresp_raw_xml = client.service.submit_func(data) 
soup = BeautifulStoneSoup(soapresp_raw_xml) 
value_i_want = soup.find('ns:NewSRId') 
0

Đã trả lời ở đây: What does suds mean by "<faultcode/> not mapped to message part"?

ngoại lệ này thực sự có nghĩa là câu trả lời từ SOAP-dịch vụ chứa thẻ <faultcode>, mà không tồn tại trong WSDL-chương trình của dịch vụ .

Hãy nhớ rằng thư viện thư rác lưu trữ sơ đồ WSDL, đó là lý do tại sao sự cố có thể xảy ra nếu lược đồ WSDL được thay đổi gần đây. Sau đó, các câu trả lời phù hợp với lược đồ mới, nhưng được xác minh bởi trình khách suds với phiên bản cũ. Trong trường hợp này, rm /tmp/suds/* sẽ giúp bạn.

Các vấn đề liên quan