Zend framework 授权http标头在Zend Soap客户端上不工作

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'

我使用下面的代码使用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' => 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起可用。