PHP SOAP 调用空响应(授权标头)

PHP SOAP call empty response (Authorization header)

提问人:nechmi bader 提问时间:10/8/2023 最后编辑:Brian Tompsett - 汤莱恩nechmi bader 更新时间:10/8/2023 访问量:41

问:

我想调用一个soap API,将数据保存到Sage X3版本12。 我正在使用以下代码:

$options = array(
      'login' => $username,
      'password' => $password,
  );

  $api = parent::__construct($url, $options);
  $result = parent::__soapCall($function_name, $arguments, $options, $input_headers, $output_headers);
  return parent::__getLastResponse();

我的PHP类扩展SoapClient

我正在使用带有抢占式身份验证的基本身份验证,但我总是得到一个空响应。 我的代码中是否有任何问题,为什么我得到一个空响应?

PHP 肥皂 鼠尾草

评论


答:

0赞 Markus Zeller 10/8/2023 #1

你需要把参数放在一个额外的数组中,就像这样

try {
    $result = parent::__soapCall($function_name, [$arguments], $options, $input_headers, $output_headers);
} catch (SoapFault $exception) {
    echo $exception->getMessage();
}

如果这不起作用,请签出 SoapFault 异常并查看错误消息。

您还应该查看客户端创建。在这里,您可以输入 WSDL 的凭据,并在选项跟踪异常中进行控制。如果您禁用了它,请启用它。通常,默认情况下它是启用的。

评论

0赞 nechmi bader 10/8/2023
我已经添加了一个捕获,但没有消息
0赞 Markus Zeller 10/8/2023
因为你发布了一个新问题,询问如何解析,这个答案对你有帮助吗?
0赞 A programmer who has no money 10/8/2023 #2

soap协议的本质是http协议。您可以在 PHP 中输出通过 soap 操作请求的 XML 信息,然后通过 postman 调用该接口,并将 xml 内容放入 postman 中查询响应结果。请记住在 postman 中设置 raw 选项。,数据格式为 xml。我以前一直在以这种方式进行故障排除。很抱歉,我没有记录PHP如何输出soap请求的XML,但我确信它可以导出。