0

我使用以下代码使用 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);

所以请找到上面的代码并为这个问题提供一些解决方案。

4

2 回答 2

1
$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);

请参考https://bugs.php.net/bug.php?id=49853

于 2013-02-22T09:12:26.243 回答
0

好的,我至少在标题中看到这是您正在尝试使用的 SOAP 服务。然后,您应该使用类似 Zend_Soap_Client.

看起来你有一个 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。

于 2013-02-15T18:30:54.037 回答