Zend framework 授权http标头在Zend Soap客户端上不工作
我使用下面的代码使用API从第三方站点检索类别,但不幸的是,流上下文无法在其API上请求,并导致内部错误 仅供参考:它在zend框架下使用Zend framework 授权http标头在Zend Soap客户端上不工作,zend-framework,soap,Zend Framework,Soap,我使用下面的代码使用API从第三方站点检索类别,但不幸的是,流上下文无法在其API上请求,并导致内部错误 仅供参考:它在zend框架下使用 $header = "Authorization: Bearer ".$accestoken."\r\n"."Content-Type:text/xml";//.'Content-Type:application/xml'; $wsdl = 'wsdl url'; $context = stream_context_create(array('http'
$header = "Authorization: Bearer ".$accestoken."\r\n"."Content-Type:text/xml";//.'Content-Type:application/xml';
$wsdl = 'wsdl url';
$context = stream_context_create(array('http' => array('header' => $header,'method'=>'GET')));
$options = array('stream_context'=>$context,'encoding'=>'ISO-8859-1','exceptions'=>FALSE);
$params = array ('accessToken' => $accestoken);
$response = $client->getAdCategories($params);
print_r($response);
因此,请找到上面的代码,并为这个问题提供一些解决方案。好的,我在标题中看到,至少这是一个您正在尝试使用的SOAP服务。然后你应该使用类似的东西 看起来你有一个WSDL。。。所以
$client = new Zend_Soap_Client("yourwsdl.wsdl");
然后提出这样的要求
$retval = $client->method1(10);
查看您的代码,我不能100%确定使用的是什么身份验证方法。如果使用基本HTTP身份验证,则只需在客户端构造函数中将用户名和密码作为选项传递
设置标题可能如下所示:
$auth = new stdClass();
$auth->user = 'joe';
$auth->token = '12345';
$authHeader = new SoapHeader('authNamespace', 'authenticate', $auth);
$client->__setSoapHeaders(array($authHeader));
如果您需要更多帮助,请发布您的WSDL
$httpHeaders = array(
'http'=>array(
'protocol_version' => 1.1,
'header' => "Authorization:Bearer ".$accestoken."\r\n" ,
"Connection: close"
));
$context = stream_context_create($httpHeaders);
$soapparams = array(
'stream_context' => $context,
);
$client = new SoapClient($wsdl, $soapparams);
$response = $client->getAdCategories($params);
print_r($response);
请参阅描述API?为什么HTTP不起作用?它是一个SOAP服务,期待一个帖子吗?什么特别阻止使用HTTP GET请求进行身份验证?感谢您的响应…..实际上我的问题是流\u上下文\u创建(数组('HTTP'=>array('header'=>$header,'method'=>'GET'))。。。。。。此标头信息未在请求标头处传递。。。。。创建此请求标头后,响应将正常。。。。。那么,有没有使用这个stream_context_create函数的PHP版本呢?5.3.0添加了可选的params参数。因此,按原样使用第二个参数需要5.3.0>,否则该方法自版本4起可用。