php - 使用 SoapClient 发出请求时如何向元素添加属性
问题描述
我需要进行 SOAP 调用,请求应该如下所示:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soap="xxxxxx">
<soapenv:Header/>
<soapenv:Body>
<soap:getOptions>
<arg0 username="?" password="?">
<getOptionsBusinessData/>
</arg0>
</soap:getOptions>
</soapenv:Body>
</soapenv:Envelope>
PHP SoapClient 有可能吗?
尝试了很多事情,所有这些都导致了 java nullpoint 异常。现在我正在尝试
$xml_string = '<getOptions>
<arg0 username="xxxx" password="xxxx">
<getOptionsBusinessData/>
</arg0>
</getOptions>';
$client = new \SoapClient('https://example.com?wsdl');
$args = array(new \SoapVar($xml_string, XSD_ANYXML));
$res = $client->__soapCall('getOptions', $args);
return $res;
得到不同类型的错误SoapFault Cannot find dispatch method for {}getOptions
。我被困住了!我该如何解开?
解决方案
不要将 xml 字符串作为参数传递。SoapClient 应该为您生成 XML。尝试以下调用:
$client = new \SoapClient('https://example.com?wsdl');
$res = $client->getOptions(array('username' => 'xxx', 'password' => 'xxx'));
return $res;
推荐阅读
- amazon-web-services - 使用 AWS CLI lambda 调用时,有没有办法传递环境变量?
- r - 如何将值的总数与另一列中的给定值相加?
- apache-spark - 将本地机器/容器设置为边缘节点,用于在远程集群上提交 Spark 应用程序
- google-sheets - 通过 API 访问私有发布的 Google 电子表格
- javascript - 如何知道获取结果 .json() 是否会成功
- angular - 跨域资源共享错误(CORS)Angular 10
- sed - SED - 替换特殊标记
- unix - 如何将参数传递给具有 Spawn 命令的 (.sh) 脚本?
- python - 由于初始化问题,两个 Python 对象共享数据
- npm - 无法在 npm 版本 7.5.1 上安装 gulp-sass