2017-04-02 13 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> 

그래서 납입에 동적 값을 추가 할 수있다 그 이유

나는이처럼 시도했다 :

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)