【问题标题】:PHP Soap - Authentication header missingPHP Soap - 缺少身份验证标头
【发布时间】:2017-04-14 20:14:43
【问题描述】:

我一直在为 WMS 使用 API,该 API 已更新为包含身份验证标头。我已获得一些必需的详细信息,但无法成功使用 API。我已经询问了开发人员,但他们无法提供帮助,因为他们不使用 PHP。

在上次更新之前,这会起作用:

$wsdl = URL_HERE;
$soapClient = new SoapClient($wsdl);
$params = array('customer' => $get_users_company->custcode_code);
$response = $soapClient->GetProducts($params);

使用身份验证标头,这就是我目前拥有的导致错误身份验证标头丢失

$wsdl = URL_HERE;
$ns = NAMESPACE_HERE;

$soapClient = new SoapClient($wsdl);
$headerbody = array('ID' => 'PROVIDED_ID_HERE', 'KEY' => 'PROVIDED_KEY_HERE');
$headers = new SOAPHeader($ns, 'AuthHeader', $headerbody);
$soapClient->__setSoapHeaders($headers);

$response = $soapClient->__soapCall("GetProducts", array('customer' => $get_users_company->custcode_code));

我不能 100% 确定我是否正确执行此操作,但如果没有最后一行,我不会收到任何错误并且页面加载正常(没有结果)。我认为正在发送标头是否正确?

【问题讨论】:

    标签: php soap soap-client soapheader


    【解决方案1】:

    我听说过好消息,“我们无能为力,因为我们是 XML 之神,而您的小 php 就在我们之下”...但是您仍然可以通过使用他们的 XML 语言从他们那里获得技术支持。转储出您的实际原始 XML 并使用它与他们通信 - 不要提及 PHP。

    Follow the example here and get your request。确保它与您的 API 文档要求的内容相匹配。如果是,请致电您的技术支持并向他们展示您的 XML。如果不是,那么您知道需要解决什么问题。

    【讨论】:

    • 感谢您的建议。我刚刚将原始 XML 请求和响应通过电子邮件发送给他们。该请求看起来对我来说应该是怎样的。再次感谢:D
    【解决方案2】:

    当使用$soapClient->__soapCall()时,第二个参数是一个数组,而你的数据结构也是一个数组,所以你可能应该这样做:

    $params = array('customer' => $get_users_company->custcode_code);
    $response = $soapClient->__soapCall("GetProducts", array($params));
    

    或者就这样:

    $response = $soapClient->GetProducts($params);
    

    哪个更好看。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-20
      • 1970-01-01
      • 2015-05-05
      • 2021-12-03
      • 2019-09-24
      • 2019-06-14
      • 1970-01-01
      相关资源
      最近更新 更多