2012-02-28 105 views
1

我想连接到一个名为e-conomic的web服务,以将我的网上商店的数据与e-conomic簿记系统同步。但是我一开始就被困在了如何开始连接。如何使用泡沫连接到webservice?

我有一个E-conomic账户,用户名和密码,我安装肥皂泡库拨打电话:

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

然后呢?

该文档是here,我想要做的是创建一个新的订单,如描述here

我的代码,我的应用程序的一部分,只是刚刚开始,我不知道如何指定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)) 

你能告诉我如何进行?

+0

的链接答案在这里所有的XML响应: http://stackoverflow.com/a/27302096/4325298 – 2014-12-04 19:19:47

回答

3

你必须调用web服务与Clientservice方法。

>>> 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}' 

我得到这个错误,因为用户没有通过身份验证。可能会有一些服务或某些密钥来验证用户身份。你需要这个密钥,然后你可以调用这些服务。

+1

好,我可以验证并运行您发布的代码:'>>> c.service.Account_Create(10,'20','ProfitAndLoss')'Output: '(AccountHandle){ Number = 10 } – 2012-02-28 13:14:11

0
#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可变