命名空间中SOAPpy的工作不正常
我正确有一个问题与Axis2上运行的SOAP API接口:命名空间中SOAPpy的工作不正常
会发生什么事是我应该调用登录方法有两个参数(登录名和密码),它返回一个认证令牌,我将用于后续的交互。
#!/usr/bin/python
from SOAPpy import SOAPProxy
s_user = 'Administrator'
s_pass = 'securityThroughObscurity'
s_host = '192.168.76.130:8998'
namespace = 'http://bcc.inc.com/IncSecurity'
url = 'http://' + s_host + '/axis2/services/IncSecurityService'
DHCPServ = SOAPProxy(url, namespace)
DHCPServ.config.dumpSOAPOut = 1
DHCPServ.config.dumpSOAPIn = 1
DHCPResp = DHCPServ.login(loginName=s_user, password=s_pass)
另一端的Axis2服务器返回一个XML错误,声明Data element of the OM Node is NULL
。纵观Axis2的日志,我看到的错误是adb_login.c(383) non nillable or minOuccrs != 0 element loginName missing
我再包捕获从已知的工作Java客户端与此客户端的XML的login
XML和这两者之间的区别:
SOAPpy的:
<ns1:login xmlns:ns1="http://bcc.inc.com/IncSecurity" SOAP-ENC:root="1">
<password xsi:type="xsd:string">securityThroughObscurity</password>
<loginName xsi:type="xsd:string">Administrator</loginName>
</ns1:login>
的Java:
<ns2:login xmlns:ns2="http://bcc.inc.com/IncSecurity">
<ns2:loginName>Administrator</ns2:loginName>
<ns2:password>securityThroughObscurity</ns2:password>
</ns2:login>
因此,这意味着,由于某种原因(可能涉及到我缺乏千牛在Python和SOAPpy中的owledge)名称空间不适用于login
方法中使用的变量,所以通过所有帐户它们实际上不存在,并且错误是有保证的。
此外,它似乎是翻转周围的变量,并将loginName之前的密码,但我不认为这很重要。
我在做什么错?
看起来像它在SOAPpy的一个已知的bug,有人提出了一个简单的补丁:http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=523083
或者(假设你有机会获得服务WSDL),SOAPpy的,可以指定一个WSDL,而不是只是一个命名空间。这看起来好像会为信封生成代码提供更好的名称空间信息。 http://diveintopython.net/soap_web_services/introspection.html
最后,如果SOAPPy只是不适合你,请尝试Suds(它是better documented比SOAPPy)。
from suds.client import Client
from suds.wsse import *
client = Client(WSDL_LOCATION)
guid = client.service.someFunctionName("a string argument", 42)
祝你好运!
感谢您的信息! – 2011-06-24 05:37:26
在你的例子中,如果someFuncitonName有一个点,你是如何解决它的?例如:guid = client.service.some.FunctionName(“一个字符串参数”,42) – dyoser 2011-12-03 18:04:44