dinu
dinu

Reputation: 81

Authorization http header is not working at Zend Soap Client

I Used the below code to retrive the categories from the third party site using API, but unfortunately stream context is not able to requested at their API and resulting in the Internal Error.

FYI : It is used under zend framework.

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

So please find the above code and provide some solution for this issue.

Upvotes: 0

Views: 2376

Answers (2)

shola
shola

Reputation: 704

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

Please refer https://bugs.php.net/bug.php?id=49853

Upvotes: 1

ficuscr
ficuscr

Reputation: 7054

OK, I see in the title at least this is a SOAP service you are trying to work with. You should then be using something like the Zend_Soap_Client.

Looks like you have a WSDL... so,

$client = new Zend_Soap_Client("yourwsdl.wsdl");

and then make a request like

$retval = $client->method1(10);

Looking at your code I am not 100% sure what authentication approach is in use. If basic HTTP auth you can just pass username and password as options in the client's constructor.

Setting a header might look something like this:

$auth = new stdClass();
$auth->user = 'joe';
$auth->token = '12345'; 

$authHeader = new SoapHeader('authNamespace', 'authenticate', $auth);

$client->__setSoapHeaders(array($authHeader));

If you need more help post your WSDL.

Upvotes: 0

Related Questions