繁体   English   中英

如何使用suds连接到webservice?

[英]How to connect to webservice using suds?

我想连接到一个名为e-conomic的网络服务,以便将我网站上的数据与电子记录簿记系统同步。 但我一开始就陷入了如何开始连接的问题。

我有一个电子版帐户,用户名和密码,我安装了suds库来拨打电话:

>>> from suds.client import Client
>>> c = Client('https://www.e-conomic.com/secure/api1/EconomicWebService.asmx?WSDL')
>>>

那又怎样?

文档在这里 ,我想要做的是创建一个像这里描述的新订单。

我的应用程序中的代码才刚刚启动,我不知道如何在SOAP请求中指定我的帐户:

from suds.client import Client

class Economic(NewBaseHandler):

    def get(self):
        url = 'https://www.e-conomic.com/secure/api1/EconomicWebService.asmx?WSDL'
        client = Client(url)
        self.response.out.write('client: %s' % str(client))

你能告诉我怎么办吗?

您必须使用Clientservice方法调用Web service

>>> from suds.client import Client
>>> c = Client('https://www.e-conomic.com/secure/api1/EconomicWebService.asmx?WSDL')
>>> c.service.Account_Create(10, '20', 'ProfitAndLoss')
------------------------------------------------------------
Traceback (most recent call last):
  File "<ipython console>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/suds-0.3.6-py2.7.egg/suds/client.py", line 240, in __call__
    return target.call(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/suds-0.3.6-py2.7.egg/suds/client.py", line 379, in call
    return method(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/suds-0.3.6-py2.7.egg/suds/client.py", line 240, in __call__
    return target.call(*args, **kwargs)
  File "/usr/lib/python2.7/site-packages/suds-0.3.6-py2.7.egg/suds/client.py", line 422, in call
    return client.invoke(args, kwargs)
  File "/usr/lib/python2.7/site-packages/suds-0.3.6-py2.7.egg/suds/client.py", line 480, in invoke
    result = self.send(msg)
  File "/usr/lib/python2.7/site-packages/suds-0.3.6-py2.7.egg/suds/client.py", line 511, in send
    result = self.failed(binding, e)
  File "/usr/lib/python2.7/site-packages/suds-0.3.6-py2.7.egg/suds/client.py", line 562, in failed
    r, p = binding.get_fault(reply)
  File "/usr/lib/python2.7/site-packages/suds-0.3.6-py2.7.egg/suds/bindings/binding.py", line 226, in get_fault
    raise WebFault(p, faultroot)
WebFault: Server raised fault: 'Economic.Api.Exceptions.AuthenticationException(E02250): User is not authenticated. Access denied. {id=131496672}'

我收到此错误,因为用户未经过身份验证。 可能存在一些服务或某些密钥,用于对用户进行身份验证。 您需要该密钥,然后您可以调用服务。

#Works only in 2.7 Python. Does not work in Python 3.0 version 

from suds.client import Client
from suds.sax.text import Raw

client = Client('https://www.e-conomic.com/secure/api1/EconomicWebService.asmx?WSDL')
xml = Raw('--Paste your entire xml --')
Response_XML= (client.service.MethodName(__inject={'msg':xml}))

- 您将在Response_XML变量中获取所有xml响应

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM