[Batch]POST mit .bat?

maxcimo

Stammgast
Hi,

Mit dem Windows Telnet Client kannst du TCP/IP Requests (also auch HTTP POSTs) verschicken:

Code:
telnet www.domain.ch 80
Und dann den HTTP POST Befehl eingeben:
Code:
POST login.html HTTP/1.1
Content-Length: 25
Content-Type: application/x-www-form-urlencoded

userid=test&password=test

Das Problem ist, dass dies leider nicht über eine Batch Datei funktioniert, da der Telnet Client der Batch-Datei die Kontrolle entzieht und keine Inputs mitgegeben werden können :( Unter Linux/UNIX wäre das alles kein Problem :rolleyes:
Ein anderer Befehl mit welchem du POST requests von einer .bat Datei aus verschicken kannst, gibt es meines Wissens nicht.

Ich sehe für dich folgende zwei Möglichkeiten
- evtl kannst du für deine Bedürfnisse auch FTP verwenden, siehe dazu http://technet.microsoft.com/en-us/library/bb490910.aspx
- oder du verwendest ein externes Tool welches dir HTTP POST anbietet und welches du über deine .bat Datei starten kannst (z.b. auch eine selbst geschriebene Java/.NET Klasse?)

gruss, m.
 

FloHoCH

Stammgast
Das wäre dann nicht mehr notwendig, die Informationen könnten direkt in der URL übergeben werden. Vom Übernehmen her (im Script) ist es ja dann ganz ähnlich.
 
A

abu

Guest
Da der OP konkret nach POST gefragt hat, gehe ich davon aus, dass er mögliche Alternativen bereits abgehakt hat. Er wird seine Gründer haben.
 

FloHoCH

Stammgast
Sehrwahrscheinlich geht POST mit einer .NET-Batchdatei (z.B. mit C# programmiert), aber eben, es brächte dann das .NET-Framework.
 

FloHoCH

Stammgast
Here's how to do a post using c#

Code:
private string HttpPost(string URI, string Parameters) 
{
   System.Net.WebRequest req = System.Net.WebRequest.Create(URI);
   req.Proxy = new System.Net.WebProxy(ProxyString, true);

   req.ContentType = "application/x-www-form-urlencoded";
   req.Method = "POST";

   byte [] bytes = System.Text.Encoding.ASCII.GetBytes(Parameters);
   req.ContentLength = bytes.Length;

   System.IO.Stream os = req.GetRequestStream ();
   os.Write (bytes, 0, bytes.Length); 
   os.Close ();

   System.Net.WebResponse resp = req.GetResponse();
   if (resp== null) return null;

   System.IO.StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());
   return sr.ReadToEnd().Trim();
}

Quelle: http://www.computing.net/programming/wwwboard/forum/12267.html
 
Zuletzt bearbeitet von einem Moderator:

maxcimo

Stammgast
und um mal etwas Gegengewicht zur .NET Präsenz hier im Forum zu geben ;) ... hier dasselbe in Java (sieht eigentlich ziemlich ähnlich aus)
Code:
private String httpPost(URL url, String data) throws IOException {
  // setup connection
  HttpURLConnection connection = (HttpURLConnection) url.openConnection();
  connection.setRequestProperty("content-type", "application/x-www-form-urlencoded");
  connection.setRequestMethod("POST");
  // send data
  OutputStreamWriter wr = new OutputStreamWriter(connection.getOutputStream());
  wr.write(data);
  wr.flush();
  wr.close();
  // return response message
  return connection.getResponseMessage();
}
(natürlich bräuchtest du dann die Java- anstatt .NET-Laufzeitumgebung)
 
hier dasselbe in Java (sieht eigentlich ziemlich ähnlich aus)

Das liegt daran, dass C# an Java und C++ anlehnt.. so können C#-Programmierer schnell und ohne extrem viel aufwand auf Java wechseln und umgekehrt.. allerdings gibt es seit FX3.5 mittlerweile so viele neue technologien, dass Java Entwickler den umstieg bei FX2.0 beginnen sollten und dann 3.5 im einzelnen... besonders Grundwissen in XML (für XAML) ist dann wichtig... denn die WPF hat es in sich, genau wie auch neue Attribute und Tags...
 
A

abu

Guest
Aber mit Java lassen sich keine Batch-Dateien machen, oder?

Ich vermisse den Smiley. Nein, Batch-Dateien direkt kann man nicht erstellen. Aber das Mini-Progrämmchen kann sehr gut per Batch gestartet werden, was den beabsichtigten Zweck ja erfüllt.

BTW, kann C#... ?
 
Oben