0

私はsuds0.4を使用しています

私は次のようなノードを作成しようとしています(SOAPリクエストの例から):

<id xsi:type="xs:int">123456</id>

これはSOAP呼び出しのパラメーターであり、intを渡すだけで次のように生成されます。

<int>123456</int>

それは私に

Expected: class java.lang.Integer, got class org.apache.xerces.dom.ElementNSImpl

ですから、私が必要としているのは、適切なタイプを作成する方法です。動作するxsd:intのインスタンスを作成しようとしましたが、値を設定する方法がわかりません。

誰かアイデアがありますか?

編集

コード:

findResult = self.client.service.find(self._getSession(), 'Candidate', 123456)

また

find = self.client.factory.create('find')
find.session = self._getSession()
find.entityName = 'Candidate'
find.id = 123456
findResult = self.client.service.find(find)

どちらの場合も同じ結果です。IDをテキストフィールドとして渡すようです。タイプを確認しましたが、間違いなくint型を使用しています。WSDLスキーマでは、パラメーターのタイプは次のとおりです。

<xs:complexType name="find">
  <xs:sequence>
    <xs:element name="session" type="xs:string" minOccurs="0"/>
    <xs:element name="entityName" type="xs:string" minOccurs="0"/>
    <xs:element name="id" type="xs:anyType" minOccurs="0"/>
  </xs:sequence>
</xs:complexType>

ここで問題が発生しましたか?

4

1 に答える 1

0

「同様の」問題が発生しました。xsi:type = "xsd:int"(Suds書き込みリクエストにデータ型がありませんか?)を持つための値が必要でしたが、何らかの理由でこれがxmlに追加されませんでした

私は最終的に、SUDSを使用するときにこのAdding xsi:typeとenvelope名前空間に出くわし、そこでソリューションを自分の使用法に適合させました。基本的に、Sudsプラグインは私のValue要素を「書き換え」てxsi:type = "xsd:int"属性を含めます。

同様のアプローチを使用して、送信SOAPにタイプを設定できる可能性があります。

また、SOAPを出力するための提案もあります。

import logging
logging.basicConfig(level=logging.INFO)
logging.getLogger('suds.client').setLevel(logging.DEBUG)
于 2012-11-28T20:57:59.933 に答える