Jump to content

__setCookie not working in SOAP request


davyb

Recommended Posts

Hi guys,

Im trying to work with a wsdl which allows me to login and sends back a token (cookie) in the response. Whenever I strip out the token and the use __setCookie to set the cookie for future requests all other requests will not authenticate... Anyone any ideas please? Im really at a loose end...

 

Heres the code Im using...

 

<?php

ini_set("soap.wsdl_cache_enabled", "0");

$url = "some.wsdl";
//$url = "http://ws.some.com/services/some?wsdl";

$soap = new SoapClient($url, array('trace' => true));


// try 3 times to login
for($i = 0; $i < 3; $i++){

try{

	$result = $soap->opLogin(array('name' => 'username', 'cleartext' => 'password'));

	$token = $result->info;

	$token = trim(str_replace("PubAuth1=", "", $token));

	// Print token
	echo "token - cookie:";
	print($token);
	echo "<br>";

	// Set cookie
	//$soap->__setCookie('PubAuth1', $token);
	createSession();

	// Retry loopje
	for($i = 0; $i < 3; $i++){
		try{

			// This is the second call which will not authenticate....
			$result2 = $soap->__soapCall("opSetUser", array("email" => "[email protected]", 'p' =>'password123'));

			// Print result

			echo "opSetUser result: ";
			var_dump($result2);
			exit;
		}
		catch(Exception $ex){
			echo "opSetUser error: " . $ex->getMessage() . "<br>";
		}
	}

}
catch(Exception $ex) {
	echo "opLogin error: " . $ex->getMessage() . "<br>";
}

}
?>

 

THanks in advance.

 

Davy

Link to comment
https://forums.phpfreaks.com/topic/235099-__setcookie-not-working-in-soap-request/
Share on other sites

Apologies,

this is my code (few typos in the last one...) :P

 

<?php

function createSession() {
        global $soap;

        $responseHeader = $soap->__getLastResponseHeaders();

var_dump($responseHeader);

        $sessionPos=strpos($responseHeader, "PubAuth1=");

        if ($sessionPos === false) {
            echo "No session id was found. Exiting.\n";
            exit();
        }
        //cookie will always be 32 bytes
        $cookie = substr($responseHeader,$sessionPos + 11,32);

        #
        # Set the Cookie name for the next request
        $soap->__setCookie("PubAuth1", $cookie);
    }


ini_set("soap.wsdl_cache_enabled", "0");

$url = "some.wsdl";


$soap = new SoapClient($url, array('trace' => true));

for($i = 0; $i < 3; $i++){

try{

	$result = $soap->opLogin(array('name' => 'Username', 'cleartext' => 'password'));


	$token = $result->info;

	$token = trim(str_replace("PubAuth1=", "", $token));


	// Set cookie
	createSession();

	// Retry loopje
	for($i = 0; $i < 3; $i++){
		try{

			$result2 = $soap->__soapCall("opSetUser", array("email" => "[email protected]", 'p' =>'password123'));


		}
		catch(Exception $ex){
			echo "opSetUser error: " . $ex->getMessage() . "<br>";

		}
	}

}
catch(Exception $ex) {
	echo "opLogin error: " . $ex->getMessage() . "<br>";
}

}
?>

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.