Reputation: 146
here is the think, I can request successfully the first, this gives me one ID, I must use this ID for the second request, but the second how?
try {
$clienteSOAP = new SoapClient ( 'someservicehere' );
$header = array('Username' => 'user', 'Password' => 'pass', 'DeviceType'=> 3,'Platform'=>'1');
$response = $clienteSOAP->GetSession($header);
//echo $response->SessionID:
//15987451
$header2 = array('Username' => 'user', 'Password' => 'pass','SessionID' => '15987451' , 'DeviceType'=> 3,'Platform'=>'1');
$clienteSOAP->GetBalance($header2);
//GetBalance throws error,
} catch ( SoapFault $e ) {
var_dump ( $e );
}
the xml for GetSession, this works great!!!
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ext="someTextHere">
<soapenv:Header/>
<soapenv:Body>
<ext:GetSessionRequest>
<ext:Username></ext:Username>
<ext:Password></ext:Password>
<ext:DeviceType></ext:DeviceType>
<!--Optional:-->
<ext:Platform></ext:Platform>
</ext:GetSessionRequest>
</soapenv:Body>
</soapenv:Envelope>
but for this, how?
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ext="SomeTextHereToo">
<soapenv:Header/>
<soapenv:Body>
<ext:GetBalanceRequest>
<ext:AuthenticationData>
<!--Optional:-->
<ext:Username></ext:Username>
<!--Optional:-->
<ext:Password></ext:Password>
<!--Optional:-->
<ext:SessionID></ext:SessionID>
</ext:AuthenticationData>
<ext:DeviceType></ext:DeviceType>
<!--Optional:-->
<ext:Platform></ext:Platform>
</ext:GetBalanceRequest>
</soapenv:Body>
</soapenv:Envelope>
Upvotes: 1
Views: 87
Reputation: 13406
You have to wrap your authentication data in a separate array, in the second definition there is an additional element wrapping the authentication credentials ().
This should work:
try {
$clienteSOAP = new SoapClient ('someservicehere');
$header = array('Username' => 'user', 'Password' => 'pass', 'DeviceType'=> 3,'Platform'=>'1');
$response = $clienteSOAP->GetSession($header);
$header2 = array('AuthenticationData' => array(
'Username' => 'user',
'Password' => 'pass',
'SessionID' => '15987451'
),
'DeviceType'=> 3,
'Platform'=>'1'
);
$clienteSOAP->GetBalance($header2);
} catch (SoapFault $e) {
var_dump ($e);
}
Since username, password and sessionid are all optional I guess you can authenticate either with username and password OR sessionid. So you probably don't have to supply username and password in the second call.
Upvotes: 1