XML Post. Wie?

  • Hallo alle und alle andere!

    ich habe bei autodns.com ein paar DNS Domäne (so ca. 400 St.) und möchte diese über Autodns API ändern. Dafür habe ich von denen eine PDF Datei bekommen, wie man sowas realisieren kann.
    Die Beispiele, die dort stehen sind aber nur für PHP oder Java und beide kann ich nicht so gut (leider).

    Ich habe nun versucht das über AutoIT zu realisieren und müsste fest stellen, dass ich das auch nicht kann.

    So sieht die XML Datei aus(in diesem Beispiel sollte man nur die Info zu einem bestimmten Domän kriegen):

    Und hier noch Java Beispiel, wie man das verwenden soll (ist etwas länger):

    Spoiler anzeigen

    Nun hier ist mein Autoit Skript:

    [autoit]


    #include <GUIConstants.au3>
    TCPStartUp()
    Dim $szIPADDRESS = "gateway.autodns.com"
    Dim $nPORT = "443"

    [/autoit][autoit][/autoit][autoit]

    Dim $ConnectedSocket = -1

    [/autoit][autoit][/autoit][autoit]

    $ConnectedSocket = TCPConnect($szIPADDRESS,$nPORT)

    [/autoit][autoit][/autoit][autoit]

    MsgBox(0,"Test", $szIPADDRESS & ":" & $nPORT)
    Dim $szData

    [/autoit][autoit][/autoit][autoit]

    $FileName = FileOpen(@ScriptDir&"\request_1.xml",0)
    $XMLData = FileRead ($FileName)

    [/autoit][autoit][/autoit][autoit]

    If @error Then
    MsgBox(4112,"Error","TCPConnect failed with WSA error: " & @error)
    Else
    MsgBox(0, "XML Data", $XMLData)
    TCPSend($ConnectedSocket,$XMLData)
    Sleep(100)
    $Response = TCPRecv($ConnectedSocket,8192)
    MsgBox(0, "XML Response", $Response);
    EndIf
    TCPCloseSocket($ConnectedSocket)

    [/autoit]

    Da wo ich XML Daten kriegen sollte, kriege ich nun nichts - MsgBox ist leer.
    Kann mir bitte jemand helfen, Beispiel geben oder wenigstens Info, wie und wo ich was nachschauen kann?

  • Ich denke, du verstehst hier etwas grundlegend falsch. Du versendest keine XML Datei sondern setzt einen Request auf die URL ab und erhältst daraufhin einen Response in Form einer XML.

    Die Parameter für deinen Request solltest du eigentlich in der Dokumentation finden.

  • Wo dein Problem selbst ist weiß ich nicht, ich würde aber mal am Pfad ansetzen. Auf jeden fall solltest du, wenn du mit
    fileopen() arbeitest auch fileclose() nutzen (ansonsten einfach in fileread() den pfad als parameter übergeben)
    Deine @Error-abfrage bezieht sich denke ich auf die Verbindung mit TCP. Es wird aber der Error der letzten Funktion abgefragt. In diesem Fall der von fileread(). Du musst @Error direkt nach der Funktion benutzen, oder aber in eine Variable zwischenspeichern.

  • Die Parameter für deinen Request solltest du eigentlich in der Dokumentation finden.

    Ja, genau das sind die Parameter - Beispielanfrage wurde das in Doku genannt.

    Zitat von &quot;aus Doku&quot;


    Das Backend wird mittels XML-Kommunikation angesprochen. Jede XML-Anfrage (Request) wird auf Gültigkeit und nötige Berechtigungen geprüft, verarbeitet und dann mit einer XML-Antwort (Response) beantwortet. In der XML-Antwort sind Informationen über den erfolgreichen oder nicht erfolgreichen Ausgang der Operation und ggf. angeforderte Daten enthalten (z. B. bei Inquire-Tasks).

    Hier zum Beispiel die Anfrage (aux XML) aber mit PHP:

  • Wesentlich einfacher tust du dich wenn du die winhttp UDF für sowas verwendest, dann sparst du dir das Zusammenstellen eines validen HTTP Posts. Ob du nun wirklich eine XML Datei an den Server senden musst oder nicht kann man ohne die Doku der API schlecht sagen, deinen Beispielen zu Folge scheint die API ab in der Tat eine XML Datei anzunehmen. Vielleicht wäre es ja sinnvoll die besagte Doku hier ebenfalls zu posten.

  • Wesentlich einfacher tust du dich wenn du die winhttp UDF für sowas verwendest, dann sparst du dir das Zusammenstellen eines validen HTTP Posts. Ob du nun wirklich eine XML Datei an den Server senden musst oder nicht kann man ohne die Doku der API schlecht sagen, deinen Beispielen zu Folge scheint die API ab in der Tat eine XML Datei anzunehmen. Vielleicht wäre es ja sinnvoll die besagte Doku hier ebenfalls zu posten.


    Das was ich habe ist von unserem DNS Anbieter direkt, ich glabue ich kann das nicht veröffentlichen. Aber diese ist genau das gleiche.

    Ich probiere es mit winhttp UDF. Danke