Hallo Zusammen,
nach langem Suchen und Wühlen komme ich leider nicht weiter.
Ich möchte eine SOAP Schnittstelle bedienen. Mir liegt eine WDSL und ein XML für den Datenrequest vor. Der SOAP-Aufruf funktioniert soweit. Ich bekomme zumindest die vorhandenen Functions zurückgemeldet.
Es hakt bei mir die vorhandene XML der Schnittstelle richtig zu übergeben. In dieser stehen die Benutzerdaten (header) und die Paramater der an die Funktion zu übergeben sind drin.
Egal was ich probiere bekomme ich entweder eine Fehlermeldung, dass kein username übergeben wurde (obwohl der in der XML drin steht) oder das die XML nicht valide ist (dies kann nicht sein, da es mit einem soapui4 funktioniert)
Kann mir jemand weiterhelfen wo mein Denkfehler liegt?
Source:
Hier der Response vom SOAP-Dienst:
Die XML enthält sowohl die User-Authentifizierung als die Parameterdaten für Funktion BookLabel. Wie muß ich die Daten richtig übergeben?
Danke schon mal im voraus für Euere Hinweise. Habe hier im Forum leider nichts passendes gefunden. Toturals wie w3school, und hier das SOAP Totural hat mir leider nicht weitergeholfen.
nach langem Suchen und Wühlen komme ich leider nicht weiter.
Ich möchte eine SOAP Schnittstelle bedienen. Mir liegt eine WDSL und ein XML für den Datenrequest vor. Der SOAP-Aufruf funktioniert soweit. Ich bekomme zumindest die vorhandenen Functions zurückgemeldet.
Es hakt bei mir die vorhandene XML der Schnittstelle richtig zu übergeben. In dieser stehen die Benutzerdaten (header) und die Paramater der an die Funktion zu übergeben sind drin.
Egal was ich probiere bekomme ich entweder eine Fehlermeldung, dass kein username übergeben wurde (obwohl der in der XML drin steht) oder das die XML nicht valide ist (dies kann nicht sein, da es mit einem soapui4 funktioniert)
Kann mir jemand weiterhelfen wo mein Denkfehler liegt?
Source:
PHP-Code:
...
$soapclient = new SoapClient($wsdl,array('trace' => true,
'soap_version' => SOAP_1_1,
));
$header = new SoapHeader(array('Username' => "xxxxx",
'Passsword' => "xxxxx"));
$soapclient->__setSoapHeaders($header);
$xml = '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:var="https://xxx/var3bl">';
$xml .='<soapenv:Header>';
$xml .='<wsse:Security soapenv:mustUnderstand="1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">';
$xml .='<wsse:UsernameToken>';
$xml .='<wsse:Username>xxxxx</wsse:Username>';
$xml .='<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-tokenprofile1.0#PasswordText">xxxxx</wsse:Password>';
$xml .='</wsse:UsernameToken>';
$xml .='</wsse:Security></soapenv:Header>';
$xml .= '<soapenv:Body>';
$xml .= '<var:BookLabelRequest portalId="xxx" deliveryName="xxx" shipmentReference="xxx" customerReference="xxx" labelFormat="PDF" senderName1="xxx" />';
$xml .= '</soapenv:Body>';
$xml .= '</soapenv:Envelope> ';
// echo all of the functions defined in the wsdl
echo "alle __getFunctions <br />";
print("<pre>");
print_r($soapclient->__getFunctions());
print("</pre>");
// echo all of the objects defined in the wsdl
echo "alle __getTypes<br />";
print("<pre>");
print_r($soapclient->__getTypes());
print("</pre>");
print_r($soapclient->BookLabel($xml));
} catch (SoapFault $e) {
echo '<pre>';
var_dump($e);
var_dump($soapclient->__getFunctions());
echo '</pre>';
echo "<br><br>GET LAST REQUEST:<br><pre>";
echo "<pre>";
echo htmlentities($soapclient->__getLastRequest());
echo "</pre>";
echo "</pre>";
echo "<br><br>GET LAST RESPONSE :<br><pre>";
echo htmlentities($soapclient->__getLastResponse());
echo "</pre>";
echo "<pre>";
echo "GET LAST REQUEST HEADERS:\n" . $soapclient->__getLastRequestHeaders() . "\n";
echo "</pre>";
echo "</pre>";
echo "<pre>";
echo "GET LAST RESPONSE HEADERS:\n" . $soapclient->__getLastResponseHeaders() . "\n";
echo "</pre>";
}
?>
PHP-Code:
GET LAST REQUEST:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="https://xxx/var3bl"><SOAP-ENV:Header/><SOAP-ENV:Body><ns1:BookLabelRequest/></SOAP-ENV:Body></SOAP-ENV:Envelope>
GET LAST RESPONSE :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<env:Envelope xmlns:ns4="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:var3bl="https://xxx/var3bl" xmlns:ns1="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<env:Header/>
<env:Body env:encodingStyle="">
<env:Fault>
<faultcode>ns4:FailedAuthentication</faultcode>
<faultstring>Authentification failed: No username given</faultstring>
</env:Fault>
</env:Body>
</env:Envelope>
GET LAST REQUEST HEADERS:
POST /xxx/SoapConnector HTTP/1.1
Host: xxx.net
Connection: Keep-Alive
User-Agent: PHP-SOAP/5.3.3
Content-Type: text/xml; charset=utf-8
SOAPAction: ""
Content-Length: 281
Die XML enthält sowohl die User-Authentifizierung als die Parameterdaten für Funktion BookLabel. Wie muß ich die Daten richtig übergeben?
Danke schon mal im voraus für Euere Hinweise. Habe hier im Forum leider nichts passendes gefunden. Toturals wie w3school, und hier das SOAP Totural hat mir leider nicht weitergeholfen.
Kommentar