Hallo zusammen,
ich bin noch relativ neu was SOAP Aufrufe durch PHP angeht und laufe eigentlich fast sofort in einen Fehler.
Folgender Maßen stelle ich eine Verbindung her.
PHP-Code:
$option = array
(
'trace'=>1,
'soap_version'=> 'SOAP_1_2', //keine Ahnung ob das richtig ist
'exceptions' => true
);
$client = new SoapClient('http://<IP>/<Info>?wsdl',$option);
das klappt auch und mit
PHP-Code:
echo "<pre>";
var_dump($client->__getFunctions());
echo "</pre>";
bekomme ich auch die Funktionen die ich erwarte zurück.
Hiermit schaffe ich auch ein Login und bekomme eine SessionID zurück.
PHP-Code:
//Logon
$function = "logon";
$params->userName = "userName";
$params->password = "password";
$result = $client->__soapCall("logon", array("parameters"=>$params), null, null, $output_headers);
Jetzt komme ich aber nicht weiter.
Folgenden Befehl (natürlich mit gefüllten Variablen) funktioniert mit jmeter einwandfrei.
Code:
<?xml version="1.0" ?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:viewCountries xmlns:ns2="http://[...]/">
<sessionId>${sessionId}</sessionId>
<viewCountriesOrder>
<destination>${destination}</destination>
</viewCountriesOrder>
</ns2:viewCountries>
</S:Body>
</S:Envelope>
Sobald ich jetzt aber in php versuche, wird destination einfach nicht übergeben:
PHP-Code:
$function = "viewCountries";
$params = new stdClass();
$params->sessionId = $sessionId;
$params->viewCountriesOrder->destination = "493049876089";
//oder auch mit
//$params->viewCountriesOrder = new stdClass();
//$params->viewCountriesOrder->destination = "493049876089";
//oder auch mit
//$params->viewCountriesOrder->destination = "493049876089";
//klappt es nicht
use_soap_error_handler(true);
try {
//oder//$result = $client->__soapCall($function, array("parameters"=>$params), null, null, $output_headers);
$result = $client->$function ($params);
echo "test";
}
catch(SoapFault $e){
// handle issues returned by the web service
echo "SoapFault";
}
catch(Exception $e){
// handle PHP issues with the request
echo "Exception";
}
echo "<pre>getLastRequest - $function<br>";
var_dump(htmlentities($client->__getLastRequest()));
echo "</pre>";
echo "<pre>getLastRequestHeaders - $function<br>";
var_dump(htmlentities($client->__getLastRequestHeaders()));
echo "</pre>";
echo "<pre>getLastResponse - $function<br>";
var_dump(htmlentities($client->__getLastResponse()));
echo "</pre>";
echo "<pre>getLastResponseHeaders - $function<br>";
var_dump(htmlentities($client->__getLastResponseHeaders()));
echo "</pre>";
Ich bekomme zurück
Code:
string(436) "<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://[...]/"><SOAP-ENV:Body><ns1:viewCountries><sessionId>8138896</sessionId><viewCountriesOrder/></ns1:viewCountries></SOAP-ENV:Body></SOAP-ENV:Envelope>
"
Ich bin jetzt mit meinem Latein am Ende, da ich auch nicht weiß, was der / die Aufrufe genau machen und die paramter verarbeiten.
Mit Hoffnung auf Hilfe.
Gruß
nites