5

初めて suds を使用し、外部企業がホストするサーバーと通信しようとしています。サーバーでメソッドを呼び出すと、この XML が返されます。

<?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>

スローされる例外は次のとおりです。

  ファイル "C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\client.py"、538 行目、__call__ 内
    return client.invoke(args, kwargs)
  ファイル「C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\client.py」、602行目、invoke
    結果 = self.send(msg)
  ファイル「C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\client.py」、634行目、送信
    結果 = self.succeeded(バインディング、reply.message)
  ファイル「C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\client.py」、669行目、成功
    r, p = binding.get_reply(self.method, reply)
  ファイル "C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\bindings\binding.py"、157 行目、get_reply 内
    結果 = self.replycomposite(rtypes、ノード)
  ファイル「C:\Python26\lib\site-packages\suds-0.4-py2.6.egg\suds\bindings\binding.py」、227行目、replycomposite
    raise Exception(' メッセージ部分にマッピングされていません' % タグ)
例外: 'faultcode' がメッセージ部分にマップされていません

suds が例外をスローしている理由は何ですか? それを修正する方法について何か考えはありますか?

4

2 に答える 2

3

呼び出しが成功し、クライアントからの応答の解析時に suds がクラッシュするという同様の問題がありました。私が使用した回避策は、生の XML を返すために suds オプションを使用してから、 BeautifulSoupを使用して応答を解析することでした。

例:

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')
于 2013-09-22T20:45:26.927 に答える