Problem habe ich nun gelöst.
Ich habe diese UDF genommen.
Man kann mit dem Befehl _Console_SetMode, die Ausgabe in die Console deaktivieren
[autoit]_Console_SetMode(-1, BitNOT($ENABLE_ECHO_INPUT))
[/autoit]Problem habe ich nun gelöst.
Ich habe diese UDF genommen.
Man kann mit dem Befehl _Console_SetMode, die Ausgabe in die Console deaktivieren
[autoit]_Console_SetMode(-1, BitNOT($ENABLE_ECHO_INPUT))
[/autoit]Hi,
schreib doch die _cin()-Funktion der UDF so um, dass sie einen Parameter entgegennimmt welcher bestimmt, ob die Zeichen in der Console als Klartext oder als Sternchen ausgegeben werden.
Ja, das dachte ich mir auch. Ich habe die Funktion angeschaut, aber nicht verstanden, wo ich da was umstellen sollte?
Weißt du das vielleicht?
Kann mir vielleicht jemand erklären wie ich mit winhttp eine XML Datei senden kann?
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
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 "aus Doku"
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:
<?php
define( 'HOST', 'https://gateway.autodns.com' );
define( 'XML_FILE', 'request.xml' );
$xml = implode( "", file(XML_FILE) );
header( 'Content-Type: text/xml' );
echo requestCurl( $xml );
function requestCurl( $data ) {
$ch = curl_init( HOST );
curl_setopt ( $ch, CURLOPT_POSTFIELDS, $data );
curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt ( $ch, CURLOPT_SSL_VERIFYPEER, FALSE );
if( !$data = curl_exec( $ch )) {
echo 'Curl execution error.', curl_error( $ch ) ."\n";
return FALSE;
}
curl_close( $ch );
return $data;
}
?>
Alles anzeigen
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):
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?
danke Leute, Problem ist gelöst.
Ich bin mir nicht ganz sicher, was du möchtest... Soll ein AutoIt-Script von einem Batch-Script gestartet werden, oder umgekehrt? Welches öffnet das Konsolenfenster?
Rein provisorisch gebe ich dir einfach mal den Tipp, dass man mit $CmdLineRaw Parameter auslesen kann die an ein AutoIt Script beim Start weitergegeben werden. Weiteres dazu findest du auch hier: http://translation.autoit.de/onlinehilfe/intro/running.htm
Falls du etwas anderes vorhast dann musst du dich vermutlich verständlicher ausdrücken.
Ich möchte eine Anwendung erstellen, diese möchte von einem Batchskript starten z.B programm.exe parameter1. Das Programm wird mit diesem Parameter gestartet und gibt die Ausgabe zurück in cmd (da wo Batchdatei gestartet wurde) zurück.
Sowas:
Hallo Leute,
Suche schon länger nach einer Lösung und zwar ich möchte ein Programm erstellen, welche von einem Batch Skript mit bestimmten Parameter ausgeführt wird und die Ausgabe sollte auch im selben CMD Fenster ersvheinen.
So ungefähr:
Ausgabe
Kann man hier irgendwi StdoutRead und Consolewrite benutzen?