Hi, für den Online-Shop eines Kunden soll ich eine Bonitätsprüfung per Webservice einbinden. Mit dem Tool soapUI funktionieren die Abfragen schon ganz gut, ich erhalte eine Antwort in XML.
Die Bonitätsprüfung im Online-Shop soll per PHP eingebunden werden. Die Abfragen werden mittels curl durchgeführt. Nur bekomme ich immer einen Fehler 400 ausgegeben, was laut Webservice-Doku "INVALID_REQUEST - Faulty enquiry. One or more Elements are faulty." bedeutet, also eine fehlerhafte Abfrage.
Ich habe den XML-Code für die Abfrage aus soapUI 1 zu 1 kopiert und in der Variablen $body gespeichert.
$body = '<?xml version="1.0" encoding="utf-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:v001="http://www.deltavista.com/dspone/ordercheck-if/V001">
<soapenv:Header>
...
</soapenv:Header>
<soapenv:Body>
...
</soapenv:Body>
</soapenv:Envelope>';
Den Header habe ich ebenfalls aus soapUI kopiert, nur den User-Agent habe ich angepasst.
$headers = array("POST https://dspone.deltavista.com/dspone/services/OrderCheckService HTTP/1.1\n",
"Accept-Encoding: gzip,deflate\n",
"Content-Type: text/xml;charset=UTF-8\n",
"SOAPAction: \"urn:orderCheck\"\n",
"User-Agent: ".$_SERVER['HTTP_USER_AGENT']."\n",
"Host: dspone.deltavista.com\n");
Und danach folgen die curl-Anweisungen
//Die Session initialisieren
$ch = curl_init();
//Session Optionen setzen
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_URL, "https://dspone.deltavista.com/dspone/services/OrderCheckService");
curl_setopt($ch, CURLOPT_HEADER, TRUE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $body);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
echo $code;
//Session beenden
curl_close($ch);
Und jetzt komme ich nicht mehr weiter. Am XML-Code für die Abfrage kann es doch eigentlich nicht liegen, oder? Bleiben also nur die curl-Anweisungen. Ich habe etliche Optionen (siehe php.net) ausprobiert, aber leider keinen Erfolg gehabt. Hab ich vielleicht was grundsätzliches übersehen oder nicht verstanden? Ist nämlich mein erster Webservice, den ich einbinde.