【问题标题】:Is there a way to use variable client.service.methods with suds-py3?有没有办法将变量 client.service.methods 与 suds-py3 一起使用?
【发布时间】:2019-09-16 15:09:45
【问题描述】:

我正在尝试创建一种方法来使用来自 suds-py3 的 suds.client 和下一个表单:

from suds.client import Client

def soap_request(url, parameter, request_dictionary, method)
    client = Client(url)
    parameter_object = client.factory.create(str(parameter))
    for var, value in request_dictionary.items():
        parameter_object[str(var)] = value
    request_response = client.service.method(parameter_object)
    return = request_response

当我使用时:

client.service.<methods_name>(parameter_object)

我得到正确的响应。但是当我使用之前的代码时,我得到这个错误信息:“suds.MethodNotFound: Method not found”

【问题讨论】:

    标签: python-3.x suds


    【解决方案1】:

    感谢https://stackoverflow.com/a/1855575/12059030这个答案,我已经成功做到了,所以结果代码是:

    from suds.client import Client
    
    def soap_request(url, parameter, request_dictionary, method):
        client = Client(url)
        parameter_object = client.factory.create(str(parameter))
        for var, val in request_dictionary.items():
            parameter_object[str(var)] = val
        request_response = getattr(client.service, method)()
        return request_response
    

    如果有人有更好的解决方案,非常欢迎

    【讨论】:

      【解决方案2】:

      前面的代码中缺少一个变量,所以完整的代码如下:

      from suds.client import Client
      
      def soap_request(url, parameter, request_dictionary, method):
          client = Client(url)
          parameter_object = client.factory.create(str(parameter))
          for var, val in request_dictionary.items():
              parameter_object[str(var)] = val
          request_response = getattr(client.service, method)(parameter_object)
          return request_response
      

      如您所见,“request_response”中缺少“parameter_object”。

      【讨论】:

        猜你喜欢
        • 2021-02-12
        • 2018-03-15
        • 2016-11-01
        • 1970-01-01
        • 2018-09-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多