php - 获取 ARERR 149 必须在控制记录中提供用户名
问题描述
我有一个 SOAP url,在通过浏览器运行 url 时,我得到一个 wsdl 响应。但是当我尝试使用所需参数列表调用响应中的方法时,它显示“ARERR [149] 用户名必须在控制记录中提供”。我尝试使用 PHP 和 python,但我得到了同样的错误。
我搜索了这个错误并得到了这样的信息:“ARControlStruct 参数的名称字段为空。在此字段中提供 AR System 用户的名称。”但是我没有看到如何提供用户名参数。
解决方案
我得到了这个问题的解决方案。以下是我解决问题所遵循的步骤(我使用“zeep”一个第 3 方模块来解决这个问题):
- 运行以下命令以了解 WSDL:
python -mzeep wsdl_url
搜索字符串“服务:”。在下面我们可以看到我们的操作名称
对于我的操作,我发现了以下条目:
MyOperation(参数...,_soapheaders={参数:ns0:AuthenticationInfo})
这清楚地传达了这一点,我必须使用 kwargs "_soapheaders" 传递参数和身份验证参数
有了这个我才知道我必须将我的身份验证元素作为 _soapheaders 参数传递给 MyOperation 函数。
- 创建的身份验证元素:
auth_ele = client.get_element('ns0:AuthenticationInfo') auth = auth_ele(userName='me', password='mypwd')
- 将身份验证传递给我的操作:
cleint.service.MyOperation('参数..', _soapheaders=[auth])
推荐阅读
- javascript - CSP 和 SSL 内联 Javascript 以及如何在外部引用
- node.js - mongodb 数组中的“$match”未返回预期结果
- python - AttributeError:“int”对象没有属性“text”
- c++ - 将特殊字符读入 wstring 时获取换行符
- javascript - 如何附加Js变量
- c# - C# 异步套接字服务器 - 在回调中开始接收
- node.js - 安装新组件后删除 Angular 组件
- dart - 如何突出显示所选卡片的边框?
- python - 优化大tick数据生成数据的功能
- c# - Xamarin Android 获取 imageuri?