谁能告诉我如何在SOAP请求中为订阅密钥添加请求标头。我正在使用NuSOAP工具包进行SOAP调用。设置授权SOAP调用的密钥对我来说似乎很困难。除非我在请求标头中传递订阅密钥,否则无法访问。
我尝试过:
$this->nusoap_client->setHeaders("<soapHeader xmlns='http://test.com/'>
<Ocp-Apim-Subscription-Key>***mykey***</Ocp-Apim-Subscription-Key>
</soapHeader>");
但是它将密钥添加到soap标头而不是请求标头。
然后我尝试了:
header("Ocp-Apim-Subscription-Key: ***mykey***");
但仍然没有希望,它现在已添加到响应头中。
我正在使用$this->nusoap_client->call()
进行SOAP调用,并且得到的响应是
{ "statusCode": 401, "message": "Access denied due to missing subscription key. Make sure to include subscription key when making requests to an API." }
预先感谢。
嗯,我自己找到了解决方案。不知道这是否是正确的方法!无论如何,我想在这里发布我的解决方案,它可能对某人有用。
我通过修改nusoap库类文件解决了这个问题。修改功能soap_transport_http
,将标头设置为:
$this->setHeader('Ocp-Apim-Subscription-Key', '***myKey***');
可能不是在SOAP请求中修改标头的正确方法,但对我有用。如果您找到更好的解决方案,请回答。