Webseite ausfüllen und abschicken

Status
Nicht offen für weitere Antworten.
P

Phönix[GAST]

Gast
Hi, wäre jemand so nett und hilft mir?
Ich möchte eine Webseite ausfüllen und dann quasi den Submit-Button drücken.
Sprich:
Seite aufrufen, <input>-Tags ausfüllen und dann den Submit-Button drücken.

Dazu habe ich mir ein paar Tutorials/Probleme durchgelesen, welche ich hier per Suchfunktion gefunden habe. Aber ich muss zugeben, ich verstehe sie kein Stück.

Könnte mir jemand anhand von diesem BEispiel Schritt für Schritt erklären, was zu tun ist.

<form name="meinForm01" id="meinForm" method="post" action="http://meinserver.de/test.php" enctype="multipart/form-data">
<input type="text" id="vorname" name="vorname01"/>
<input type="text" id="geburtstag" name="geburtstag01"/>
<input type="submit" id="fertig" name="fertig01"/>
</form>

Hoffnungsvoll schon im Voraus dankend,
Phönix
 

gex

Bekanntes Mitglied
Von wo aus willst du das Formular ausfüllen? Aus einem Java-Client?

Weshalb willst du sowas machen? - Klingt mir nach Spamming von Formularen?!
 
P

Phönix[GAST]

Gast
Ja, ich möchte es mit einem kleinen Java-Programm machen.

Spamming liegt mir absolut fern. Ich hielt es einfach für eine leichte Art, korrekte Post-Strings zu erzeugen, da diese ja dank dem Submit-Button von der Webseite selbst erzeugt werden.
Ich habe bei manchen Seiten ernsthafte Schwierigkeiten, die JavaScript-Blöcke zu analysieren und auf diese Weise könnte ich mir das komplett sparen.
 

cschaedl

Mitglied
hi,

hatte mich letztens mit dem selben Problem beschäftigt, vll. hilft dir die Klasse etwas:

Code:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;

public class Request {
   private String action = "";
   private Map<String, String> parameters = new HashMap<String, String>();
   private Map<String, String> header = new HashMap<String, String>();

   /**
    * Setzt das action-Attribut
    * 
    * @param action
    */
   public void setAction(String action) {
      this.action = action;
   }

   /**
    * Setzt eine RequestParameter-Map
    * 
    * @param parameters
    */
   public void setParameters(Map<String, String> parameters) {
      this.parameters = parameters;
   }

   /**
    * Fügt ein Name/Value-Paar zur RequestParameter-Map hinzu.
    * 
    * @param name
    * @param value
    */
   public void addParameter(String name, String value) {
      this.parameters.put(name, value);
   }

   /**
    * Setzt einen Header.
    * 
    * @param header
    */
   public void setHeader(Map<String, String> header) {
      this.header = header;

   }

   /**
    * Gibt den Header zurück.
    * 
    * @return
    */
   public Map<String, String> getHeader() {
      return this.header;
   }

   /**
    * Konvertiert die Elemente der RequestParameter-Map in einen
    * ParameterString.
    * 
    * @return encodedParameters
    * @throws UnsupportedEncodingException
    */
   private String encodeParameters() throws UnsupportedEncodingException {
      Set<Map.Entry<String, String>> set = this.parameters.entrySet();
      Iterator<Map.Entry<String, String>> it = set.iterator();
      String encodedParameters = new String();

      while (it.hasNext()) {
         Map.Entry<String, String> current = it.next();
         encodedParameters += "&" + current.getKey() + "="
               + URLEncoder.encode(current.getValue(), "iso-8859-1");
      }
      return encodedParameters.substring(1);
   }

   /**
    * Führt einen Post-Request durch und fügt, falls gesetzt, einen Header
    * hinzu.
    * 
    * @return response
    * @throws MalformedURLException
    * @throws IOException
    */
   public InputStream request() throws MalformedURLException, IOException {
      URL url = new URL(this.action);
      URLConnection urlc = url.openConnection();
      for (String key : this.header.keySet()) {
         urlc.addRequestProperty(key, this.header.get(key));
      }
      String encodedParameters = encodeParameters();
      String length = String.valueOf(encodedParameters.length());

      urlc.setUseCaches(true);
      urlc.setDefaultUseCaches(true);
      urlc.setDoInput(true);
      urlc.setDoOutput(true);
      urlc.setRequestProperty("Content-Type",
            "application/x-www-form-urlencoded");
      urlc.setRequestProperty("Content-Length", length);

      OutputStream os = urlc.getOutputStream();
      OutputStreamWriter requestWriter = new OutputStreamWriter(os);
      requestWriter.write(encodedParameters);
      requestWriter.flush();
      requestWriter.close();

      URLConnection postMethodResponse = urlc;
      this.header = new HashMap<String, String>();
      Map<String, List<String>> responseHeader = postMethodResponse
            .getHeaderFields();
      for (String key : responseHeader.keySet()) {
         this.header.put(key, responseHeader.get(key).get(0));
      }

      return postMethodResponse.getInputStream();
   }
}

Für das Forumlar
Code:
<form name="meinForm01" id="meinForm" method="post" action="http://meinserver.de/test.php" enctype="multipart/form-data">
<input type="text" id="vorname" name="vorname01"/>
<input type="text" id="geburtstag" name="geburtstag01"/>
<input type="submit" id="fertig" name="fertig01"/>
</form>

wäre der Code:
Code:
Request request = new Request();
request.setAction("http://meinserver.de/test.php");
request.addParameter("vorname01", "(value)");
request.addParameter("geburtstag01", "(value)");
request.addParameter("fertig01", "");
InputStream is = request.request();

Für (value) natürlich die Werte setzen, die du in die jeweiligen Felder "eintragen" willst.

mfg
Christopher
 

HoaX

Top Contributor
daran dass Request nicht mit dateiuploads umgehen kann? nimm httpunit/htmlunit/... die kümmern sich sogar um javascript
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M webseite automatisch ausfüllen und abschicken Netzwerkprogrammierung 2
J Webseite mit Kundenportal Netzwerkprogrammierung 5
C Quelltext Webseite schlägt noch immer fehl Netzwerkprogrammierung 30
H Daten auf einer Webseite eintragen Netzwerkprogrammierung 11
K Mit Java ASPX Webseite fern steuern Netzwerkprogrammierung 2
D Webseite(mit JavaScript-Element) mit Java auslesen Netzwerkprogrammierung 0
B HTTP Webseite unter IP-Addresse nicht aufrufbar - unter Domain schon Netzwerkprogrammierung 9
O HTTP Zugriff und Aktionen auf einer Webseite ausführen Netzwerkprogrammierung 9
S Automatischer Login auf einer Webseite Netzwerkprogrammierung 12
H Daten an Textfeld einer Webseite schicken Netzwerkprogrammierung 2
E Webseite mit Login laden Netzwerkprogrammierung 5
J VideoStream von Webseite lesen/speichern Netzwerkprogrammierung 7
M Download von Webseite Netzwerkprogrammierung 4
T Actions WebSeite Netzwerkprogrammierung 3
M Per eigenem Java SE Prog einloggen auf Webseite Netzwerkprogrammierung 19
aze Applet von Webseite aufrufen und mit diesem kommunizieren Netzwerkprogrammierung 8
N Webseite holen, Knöpfe drücken, Textfelder holen, etc. Netzwerkprogrammierung 7
hdi Webseite auf Download-Links prüfen und Download starten? Netzwerkprogrammierung 7
S Zugriff auf Webseite Netzwerkprogrammierung 3
J programm zum autom. ausdruck einer webseite Netzwerkprogrammierung 2
G Webseite <=> Java Netzwerkprogrammierung 4
S webseite mit cookie besuchen Netzwerkprogrammierung 5
M webseite holen Netzwerkprogrammierung 7
E In Webseite einloggen/ GET, POST an PHP-Script übergeben Netzwerkprogrammierung 2
A Textfelder finden und im hintergrund ausfüllen? Netzwerkprogrammierung 3
B HTML Formularfelder erkennen und ausfüllen Netzwerkprogrammierung 3
U Webformular ausfüllen ( Post ) Netzwerkprogrammierung 7
J Formular über Java abschicken Netzwerkprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben