0

suds 0.4.1-3.el6.

ソフトウェアの最近の更新まで、すべてが機能していました。現在、すべてのスクリプトは次のようになっています。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
#

import logging
from suds import WebFault
from suds.client import Client

logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)

client = Client("http://localhost:80/admin/soap/api3.wsdl")
#print client.location
#client.location = 'http://localhost:34012/'

print client

で終わる:

Traceback (most recent call last):
  File "print.py", line 18, in <module>
    client = Client("http://localhost:80/admin/soap/api3.wsdl")
  File "/usr/lib/python2.6/site-packages/suds/client.py", line 119, in __init__
    sd = ServiceDefinition(self.wsdl, s)
  File "/usr/lib/python2.6/site-packages/suds/servicedefinition.py", line 58, in __init__
    self.paramtypes()
  File "/usr/lib/python2.6/site-packages/suds/servicedefinition.py", line 137, in paramtypes
    item = (pd[1], pd[1].resolve())
  File "/usr/lib/python2.6/site-packages/suds/xsd/sxbasic.py", line 63, in resolve
    raise TypeNotFound(qref)
suds.TypeNotFound: Type not found: '(soapDiscountAddons, http://www.w3.org/2001/XMLSchema, )'

ソフトウェア サポートは、「私たちの WSDL ファイルは問題ありません。Suds 開発者に問い合わせてください」と言ったので、この問題を調査するために助けが必要です。

以前の作業ファイル:
https://dl.dropbox.com/u/4299326/py/20130225.wsdl/old/api3.wsdl
https://dl.dropbox.com/u/4299326/py/20130225.wsdl/old /encoding.xml

新しいクラッシュ ファイル:
https://dl.dropbox.com/u/4299326/py/20130225.wsdl/new/api3.wsdl
https://dl.dropbox.com/u/4299326/py/20130225.wsdl/new /encoding.xml

4

1 に答える 1

3

ソフトウェア サポートは、「私たちの WSDL ファイルは問題ありません。Suds 開発者に問い合わせてください」と述べています。

それは正しくないと思います。sudsType not found: '(soapDiscountAddons, http://www.w3.org/2001/XMLSchema, )'が表示しているメッセージは正しいです。

WSDL を見ると、soapDiscountAddonsurn:api3名前空間にあるため、使用するときにそのことを言及する必要があります。問題はここにあります:

<!-- operation response element -->
<element name="getDiscountAddonsResponse">
  <complexType>
    <sequence>
      <element name="ret" type="soapDiscountAddons" minOccurs="1" maxOccurs="unbounded"/>
    </sequence>
  </complexType>
</element>
<!-- operation request element -->
<element name="insupdDiscountAddon">
  <complexType>
    <sequence>
      <element name="val" type="soapDiscountAddons" minOccurs="1" maxOccurs="1"/>
    </sequence>
  </complexType>
</element>

型のプレフィックスを付けていないため、現在の名前空間が使用されます。これはhttp://www.w3.org/2001/XMLSchemaではなくurn:api3です。タイプがどこにあるかを探す代わりに、suds はもちろん存在しない要素をsoapDiscountAddons@urn:api3見つけようとしています。soapDiscountAddons@http://www.w3.org/2001/XMLSchema

これで修正されるはずです:

<element name="getDiscountAddonsResponse">
 <complexType>
  <sequence>
    <element name="ret" type="lbapi:soapDiscountAddons" minOccurs="1" maxOccurs="unbounded"/>
    <!--                      ^^^^^ you are missing this  -->
  </sequence>
 </complexType>
</element>
<!-- operation request element -->
<element name="insupdDiscountAddon">
 <complexType>
  <sequence>
   <element name="val" type="lbapi:soapDiscountAddons" minOccurs="1" maxOccurs="1"/>
   <!--                      ^^^^^ you are missing this  -->
  </sequence>
 </complexType>
</element>
于 2013-03-03T10:24:04.950 に答える