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):
<?xml version="1.0"encoding="utf-8" ?>
<request>
<auth>
<user>customer</user>
<password>password</password>
<context>4</context>
</auth>
<task>
<code>0105</code>
<domain>
<name>example.com</name>
</domain>
<key>payable</key>
</task>
</request>
Alles anzeigen
Und hier noch Java Beispiel, wie man das verwenden soll (ist etwas länger):
Spoiler anzeigen
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.Charset;
/**
* Communicates with the backend.
*
* @author
*
*/
public class Communicator {
private static final String BACKEND_URL = "https://gateway.autodns.com/;"
private static final Charset utf8Charset = Charset.forName("UTF-8");
/**
* sends the given request to the predefined backend url via http post and reads the
response
*
* @param request
* @return
*/
public String sendRequest(String request) {
URL url;
HttpURLConnection connection = null;
try {
byte[] requestBytes = request.getBytes(utf8Charset);
// Create connection
url = new URL(BACKEND_URL);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-formurlencoded");
connection.setRequestProperty("HTTP-Version", "HTTP/1.0");
connection.setRequestProperty("Content-Length", "" +
Integer.toString(requestBytes.length));
connection.setRequestProperty("Content-Language", "de-DE");
connection.setRequestProperty("charset", "utf-8");
connection.setUseCaches(false);
connection.setDoInput(true);
connection.setDoOutput(true);
// Send request
DataOutputStream dataOutputStream = new
DataOutputStream(connection.getOutputStream());
dataOutputStream.write(requestBytes);
dataOutputStream.flush();
// Get Response
InputStream is = connection.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line;
StringBuffer response = new StringBuffer();
while((line = reader.readLine()) != null) {
response.append(line);
response.append('\r');
}
return response.toString();
} catch(Exception e) {
e.printStackTrace();
return null;
} finally {
if(connection != null) {
try {
connection.getOutputStream().close();
connection.getInputStream().close();
} catch(Throwable e) {
}
connection.disconnect();
}
}
}
}
Alles anzeigen
Nun hier ist mein Autoit Skript:
[autoit]
#include <GUIConstants.au3>
TCPStartUp()
Dim $szIPADDRESS = "gateway.autodns.com"
Dim $nPORT = "443"
Dim $ConnectedSocket = -1
[/autoit][autoit][/autoit][autoit]$ConnectedSocket = TCPConnect($szIPADDRESS,$nPORT)
[/autoit][autoit][/autoit][autoit]MsgBox(0,"Test", $szIPADDRESS & ":" & $nPORT)
Dim $szData
$FileName = FileOpen(@ScriptDir&"\request_1.xml",0)
$XMLData = FileRead ($FileName)
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)
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?