如何使用带有请求中的多个元素的suds客户端发送请求
发布时间:2020-12-20 13:17:01 所属栏目:Python 来源:网络整理
导读:我在发送suds请求时遇到问题. 我只是使用以下方法向不同的方法发送了请求: from suds.client import Client client = Client(wsdlurl) client.service.Login(name,employid) 由于name和employid是Login的直接子元素,因此返回正确的响应. 但是如何使用以下方
我在发送suds请求时遇到问题.
我只是使用以下方法向不同的方法发送了请求: from suds.client import Client client = Client(wsdlurl) client.service.Login(name,employid) 由于name和employid是Login的直接子元素,因此返回正确的响应. 但是如何使用以下方式发送请求: <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' 解决方法
我假设您使用的是
https://bitbucket.org/jurko/suds.您必须知道自己的wsdl接口; suds可以在运行时部分提供:
# ... '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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |