Soappy错误:Fault SOAP-ENV:Server:无法将stdClass类型的对象用作数组

0 投票
1 回答
815 浏览
提问于 2025-04-17 19:51

我想用soappy访问我互联网服务提供商的网络服务。

这里有一个来自服务提供商的PHP示例,关于Soap服务: http://kasapi.kasserver.com/dokumentation/?open=soap

但是我在用Python运行时遇到了问题。我总是收到这个错误信息:“无法将stdClass类型的对象用作数组”。

有没有什么办法可以解决这个问题呢?!我的程序有34行代码……

这是代码:

from SOAPpy import WSDL
from SOAPpy.Errors import HTTPError as SoapHTTPError
from SOAPpy.Types import faultType
import hashlib
from array import array

class KASSystem(object):

    def __init__(self):
        WSDL_AUTH = 'https://kasapi.kasserver.com/soap/wsdl/KasAuth.wsdl'
        WSDL_API = 'https://kasapi.kasserver.com/soap/wsdl/KasApi.wsdl'


        userpass = ['mylogin','mypassword']
        m = hashlib.sha1()
        m.update(userpass[1])

        userpass[1] = m.hexdigest()
        loginData = {'user':userpass[0],'pass':userpass[1]}

        self.__SoapServer = WSDL.Proxy(WSDL_AUTH)

        try:
            self.__CredentialToken = self.__SoapServer.KasAuth({
                'KasUser':loginData['user'],
                'KasAuthType':'sha1',
                'KasPassword':loginData['pass'],
                'SessionLifeTime':1800,'SessionUpdateLifeTime':'Y'})

        except (SoapHTTPError), e:
            print "Fehlermeldung:", e.code,e.msg

KasObj = KASSystem()

我收到了这个错误信息:

Traceback (most recent call last):
  File "/storage/PyProjects/toolsAPP/KASUpdate.py", line 33, in <module>
    KasObj = KASSystem()
  File "/storage/PyProjects/toolsAPP/KASUpdate.py", line 28, in __init__
    'SessionLifeTime':1800,'SessionUpdateLifeTime':'Y'})
  File "build/bdist.linux-x86_64/egg/SOAPpy/Client.py", line 540, in __call__
  File "build/bdist.linux-x86_64/egg/SOAPpy/Client.py", line 562, in __r_call
  File "build/bdist.linux-x86_64/egg/SOAPpy/Client.py", line 475, in __call
SOAPpy.Types.faultType: <Fault SOAP-ENV:Server: Cannot use object of type stdClass as array>

1 个回答

0

方法的第一个参数必须是消息名称,第二个参数是一个字典,里面包含了所有的参数......

撰写回答