2017-04-02 3 views
4

sudsリクエストを送信する際に問題が発生しています。リクエストに複数の要素を含むsudsクライアントを使用してリクエストを送信する方法

私は、以下のものを使用して別の方法にリクエストを送っ:

from suds.client import Client 

    client = Client(wsdlurl) 

    client.service.Login(name, employid) 

名とemployidログインの直接の子要素であり、これは正しい応答で戻ってきました。

しかし、どのように、私は以下を使用して要求を送信することができます。

<soapenv:Body> 
     <v12:getStuff> 
     <v12:stuffSelect> 
      <!--Optional:--> 
      <v12:stuffIDs> 
       <!--Zero or more repetitions:--> 
       <v12:num></v12:num> 
      </v12:stuffIDs> 
     </v12:stuffSelect> 
     </v12:getStuff> 
    </soapenv:Body> 
</soapenv:Envelope> 

これはので、私は、私はこのようにそれを試してみたNUM

に動的な値を追加することができている理由:

return self.client.service.getStuff.stuffSelect.stuffIDs(**{'stuffID': stuff_id, }) 

しかし、このエラーが出る

AttributeError: 'Method' object has no attribute 'stuffSelector' 

答えて

0

私はあなたがhttps://bitbucket.org/jurko/sudsを使用していると仮定します。あなたのwsdlインターフェイスを知っていることは不可欠です。ランタイムに部分的にそれを提供することができます:

# ... 'client' via wsdl url, login 

# get example 
http_status, payload = client.service.your_wsdl_get_stuff_method() 
stuffIDs = [] 
if http_status == 200: 
    for stuff_id in payload: # depending on your wsdl 
     stuffIDs.append(stuff_id) 

# upload example 
stuffSelect = client.factory.create('stuffSelect') # structure generated by suds from wsdl 
stuffSelect.your_wdsl_stuff_ids_name = stuffIDs # (maybe debug to see your name) 

params = foo, bar, stuffSelect 
svr_response = client.service.your_wsdl_upload_method(*params) 
関連する問題