2013-06-24 81 views
1

我需要在我的PHP調用使用cookie,目前我使用的是下面的要求:使用cookies PHP SOAP調用

$publish_Data ='<?xml version="1.0" encoding="utf-8"?> 
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> 
    <soap:Body> 
    <publishData xmlns="http://www.birst.com/"> 
     <token>'.$login_token.'</token> 
     <spaceID>'.$space_id.'</spaceID> 
     <date>'.$date.'</date> 
    </publishData> 
    </soap:Body> 
</soap:Envelope>'; 


$location_URL = "https://app2104.bws.birst.com/CommandWebService.asmx?wsdl"; 
$action_URL = "http://www.birst.com/publishData"; 


$client = new SoapClient(null, array(
'location' => $location_URL, 
'uri'  => "", 
'trace' => 1, 
)); 


try{ 
$publish_data_response = $client->__doRequest($publish_Data,$location_URL,$action_URL,1); 
//Get response from here 
//print_r($publish_data_response); 
}catch (SoapFault $exception){ 
var_dump(get_class($exception)); 
var_dump($exception); 
} 

我需要以某種方式啓用和將遵循未來的呼叫使用cookies以。 我嘗試使用

sessions_start() 

,但它並沒有幫助 - 在Java中,一種叫SESSION_MAINTAIN_PROPERTY使用它允許程序使用cookies,我如何做同樣的PHP?

回答

1

問題解決了。 問題在於SoapClient,當我發送請求時,我爲每次調用創建了一個新的SoapClient,並且每次調用都給了我不同的cookie - 這是一種不同的會話。

基本上你需要定義SOAP調用一次:

$client = new SoapClient(null, array(
'location' => $location_URL, 
'uri'  => "", 
'trace' => 1, 
)); 

,並使用相同的客戶呼叫的休息。