API Bad Request

  • Hallo,

    Ich versuche die Funktion "changeIProuting" über einen API call auszuführen.

    Dazu habe ich folgende XML Datei angelegt:


    Den API Call führe ich über die Kommandozeile mit folgendem Befehl aus:


    Code
    $ curl -v -H "< Content-Type: text/xml;charset=UTF-8" -H "SOAPAction:" -d /var/lib/pacemaker/ip_routing_request.xml -X POST https://www.vservercontrolpanel.de/VCP/WSAdmin?wsdl


    Ich habe WebService in SCP aktiviert und auch das Passwort generiert.

    Wenn ich nun aber diesen Call ausführe bekomme ich folgende Ausgabe:


    HTML
    <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
    <html><head>
    <title>400 Bad Request</title>
    </head><body>
    <h1>Bad Request</h1>
    <p>Your browser sent a request that this server could not understand.<br />
    </p>
    <hr>
    <address>Apache/2.4.10 (Debian) Server at scp.netcup.net Port 443</address>
    </body></html>


    Leider habe ich bisher meinen Fehler nicht gesehen und bin daher über jede Hilfe dankbar.

    Viele Grüße :)

  • Zuallererst weiß ich nicht, woher du "https://www.vservercontrolpanel.de/VCP/WSAdmin?wsdl" hast. Das ähnlichste was ich im Wiki finde ist "https://www.servercontrolpanel.de/WSEndUser?wsdl" (https://www.netcup-wiki.de/wik…rvice#Web_Service_Methods)


    Der Link verweist jedoch auf eine WSDL (Web Service Description Language). Das ist eine XML-Datei, die einmal die gesamte SOAP-API Dokumentation in einem maschinenlesbaren Format bereitstellt, wodurch du dann mit entsprechenden Tools automatisch aus der WSDL-Datei API-Funktionen generieren kannst, wo dann auch gleich der SOAP-Code drin steht. Ist quasi das, was Swagger für REST-APIs macht.
    Am Ende der WSDL-Datei findest du dann:

    Code
    <service name="WSEndUserService"><port name="WSEndUserPort" binding="tns:WSEndUserPortBinding"><soap:address location="https://www.servercontrolpanel.de:443/SCP/WSEndUser"/></port></service> 


    Daher würde ich dir mal empfehlen die in der WSDL angegebene SOAP-Adresse "https://www.servercontrolpanel.de:443/SCP/WSEndUser" zu nutzen.


    Mfg 7c00


    P.S.: Am Ende vom Wikiartikel gibts auch PHP-Beispielcode zur WSDL-Nutzung. Den könnte man sonst auch recht einfach nutzen und dann per Terminal Aufrufen (php meinskript.php)