簡體   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