我有一个SOAP url,当通过浏览器运行url时,我得到wsdl响应。但是,当我尝试使用所需的参数列表在响应中调用方法时,它显示“ ARERR [149] A用户名必须在控制记录中提供。”我尝试使用PHP和python,但遇到相同的错误。
我搜索了此错误,并得到了如下信息:“ ARControlStruct参数的名称字段为空。在此字段中提供AR System用户的名称。”。但是我什么地方都看不到如何提供用户名参数。
答案 0 :(得分:0)
我已经找到了解决这个问题的方法。下面是解决该问题的步骤(我使用“ zeep”第3方模块来解决此问题):
python -mzeep wsdl_url
搜索字符串“ Service:”。在下面可以看到我们的操作名称
对于我的操作,我发现以下条目:
MyOperation(参数...,_soapheaders = {参数:ns0:AuthenticationInfo})
清楚地表明,我必须使用kwargs“ _soapheaders”传递参数和auth参数
由此我知道我必须将身份验证元素作为_soapheaders参数传递给MyOperation函数。
auth_ele = client.get_element('ns0:AuthenticationInfo') auth = auth_ele(userName ='me',password ='mypwd')
cleint.service.MyOperation('parameters ..',_soapheaders = [auth])