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