PHP Soap - 缺少身份验证标头

时间:2016-11-30 13:20:42

标签: php soap soap-client soapheader

我一直在为已更新的WMS使用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%确定我这样做是正确的,但没有最后一行,我没有错误,页面加载正常(没有结果)。我认为标题正在发送是否正确?

2 个答案:

答案 0 :(得分:1)

我听说过这个好老了,我们无法提供帮助,因为我们是XML神,而你的小PHP在我们身下......#但你仍然可以通过说话从他们那里获得技术支持他们的XML语言。转储您的实际原始XML并使用它来与它们进行通信 - 不要提及PHP。

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

答案 1 :(得分:0)

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

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

或者只是将其保留为:

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

哪个看起来更好。