Webformular ausfüllen ( Post )

Status
Nicht offen für weitere Antworten.

Umbra

Mitglied
Moin, ich wollte das hier nicht ins Anfängerforum hauen obwohl es vieleicht dahingehört.

Ich möchte eine Java-Anwendung die lokal läuft und bei einer vorgebenen Seite ein Formular ausfüllt und mir das Ergebnis dann zurück gibt. Danach sollen die Daten noch weiterverarbeitet werden, aber dass ist ein anderes Problem.

Es geht um die Webseite :
"http://ted.publications.eu.int/official/Exec?DataFlow=ShowPage.dfl&Template=TED/extended_search#"

Ich habe dort mit Mozilla und den Http Live Headers bereits ausgelesen welcher befehl per post übergeben wird.
Jedoch scheiter ich schon, wenn selbst eine simple suche erfolgen soll.


Der Code scheint zwar zu funktionieren, jedoch weiß ich nicht, warum er trotzdem die Standartseite zurückwirft.
Er sollte doch eigentlich nun die Ergebnisse aussprucken.
Gibt es noch andere Wege das Forumlar auszulesen und den Datenverkehr rauszubekommen als die Http Live Headers?






Code:
import java.net.*;
import java.io.*;

public class Test {

 public static void main(String[] args) {
   try
   {	
     // Url der Startseite
     String resultURL ="http://ted.publications.eu.int/official/Exec?DataFlow=ShowPage.dfl&Template=TED/extended_search#";
		
			
     // Aufbau einer Verbindung zur Webseite
     URL postURL = new URL(resultURL);     
     System.out.println(">>> Verbdinung wir aufgebaut .....");
     HttpURLConnection con = (HttpURLConnection) postURL.openConnection();
     
     // Eigenschaften der Verbindung
     con.setUseCaches(false);       // nutze keinen cache
     con.setDoOutput(true);         // benutzen für output
     con.setDoInput(true);          // benutzen für Input
     con.setRequestMethod("POST");  // benutze Post um Daten zu übertragen
            
    
     PrintWriter out = new PrintWriter(con.getOutputStream());
    
    // Aufbau des Strings für die Übergabe der Werte, hier von den HTTP Live Headers genommen
     String U="UTF-8";
     String postStr;
     postStr =" /official/SettingSessionVariables Name=listretrieval%40displayCriteria%40fulltext_textfield%40OJ_textfield%40country_textfield%40place_textfield%40contract_textfield%40procedure_textfield%40document_textfield%40regulation_textfield%40CPV_textfield%40NUTS_textfield%40publication_textfield%40docnumber_textfield%40datedoc_textfield%40deadline_textfield%40type_author_textfield%40name_author_textfield%40heading_textfield%40fulltext_textfield_hid%40OJ_textfield_hid%40country_textfield_hid%40place_textfield_hid%40contract_textfield_hid%40procedure_textfield_hid%40document_textfield_hid%40regulation_textfield_hid%40CPV_textfield_hid%40NUTS_textfield_hid%40publication_textfield_hid%40docnumber_textfield_hid%40datedoc_textfield_hid%40deadline_textfield_hid%40type_author_textfield_hid%40name_author_textfield_hid%40heading_textfield_hid%40docLang%40maxRow%40SelRetrieval%40FTIndex%40SearchFrom%40ExpertQry%40op1%40op2%40Query&Value=code%2COJ%2CND%2CTI%40No%40null%40null%40DE%40null%40null%40null%40null%40null%40null%40null%40null%40null%40null%40null%40null%40null%40null%40null%40null%40%28+CY%3ADE%29%40null%40null%40null%40null%40null%40null%40null%40null%40null%40null%40null%40null%40null%40null%40DE%40100%40OJ%2CND%2CTI%40TEDINDEX%40extended%40null%40AND%40AND%40cs_type%3Adb++AND+%28%28+CY%3ADE%29%29&Redirect=Exec%3FDataFlow%3Dlist_results.dfl%26TableName%3DTED_DE%26Template%3DTED%2Fresult_list.xsl";

     
     // Übertrage Post
     System.out.println(">>> Poste: "+postStr);
     out.println(postStr); // sende an Server
     out.close();   // übertrage den Outputstream
     
     
     //Get the results page from the server
     String inputLine="";   //Stores the line of text returned by the server
     String resultsPage=""; // Stores the complete HTML results page
     
     System.out.println(">>> Waiting for response...\n\n");
     BufferedReader in = new BufferedReader(
     		     new InputStreamReader(con.getInputStream()));          		  

     while ((inputLine = in.readLine()) != null)
     	   resultsPage+=inputLine;
     in.close();
     
     // Dump the results page onto the console
     // resultsPage contains the entire HTML result page
     // You can write it to a file or display on the screen
     System.out.println(resultsPage);
     
     FileOutputStream outf; // declare a file output object
     PrintStream p; // declare a print stream object

     try
     {
             // Create a new file output stream
             // connected to "myfile.txt"
             outf = new FileOutputStream("myfile.html");

             // Connect print stream to the output stream
             p = new PrintStream( outf );

             p.println (resultsPage);

             p.close();
     }
     catch (Exception e)
     {
             System.err.println ("Error writing to file");
     }
   
   
   }
   
   
   
   
   catch(Exception e){
     // catch any exceptions
     System.out.println(e);
	}//end catch
  } // end main
} // end class


Kann mir vieleicht auch wer gute Litertur zu dem Thema empfehlen?
Ich werde mich wohl öfter damit rumschlagen müssen und ein bisschen was zum Lesen in dem Bereich wäre nicht schlecht.
 
D

Der n bisschen Plan hat

Gast
HI Umbra. Bin mir zwar nicht sicher, solltest aber in Zeile 31 statt
postStr =" /official/SettingSessionVariables Name=listret....
postStr =" //official//SettingSessionVariables Name=listret.... , also mit zwei "/" versuchen, da Java Zeichen hinter "/" als Steuerzeichen versteht.

Hoffe, dass klappt :wink:
 

Umbra

Mitglied
Nein, dass war es leider nicht.
Aber es muss irgendsowas was "kleines, dummes" sein.

Bin noch am testen und druchprobieren.
Leider gibt es aber in dem Gebiet relativ weniger Literatur oder ich finde sie einfach nicht :(.
 

Bleiglanz

Gesperrter Benutzer
Code:
							<td vAlign="center">[url="javascript: fillQuickSearchandSubmit();"][img]/TEDimages/go.gif[/img][/url]</td>						
							</tr>
							<input type="hidden" name="Action" value="DataFlow"/>
							<input type="hidden" name="DataFlow" value="list_results.dfl"/>
							<input type="hidden" name="Template" value="TED/result_list.xsl"/>
							<input type="hidden" id="Query" name="Query" value=""/>
							<input type="hidden" id="TableName" name="TableName" value=""/>
							<input type="hidden" id="SelRetrieval" name="SelRetrieval" value="OJ,ND,TI"/>
							<input type="hidden" id="FieldList" name="FieldList" value="all"/>
							</form>
hast du wirklich alles genau durchgeschaut?
das Javascript analysiert?

vielleicht fragen die am Server ab, ob es sich um GET oder POST Variablen handelt?

vielleicht fragen die auch den Browser ab (Kennung mitschicken?)
 

Umbra

Mitglied
Ehrlich gesagt, habe ich von Java-Script keine Ahnung und versuche noch anhand von Analogien zu Java, dass in Ansätzen zu verstehen.

Darum habe ich das ganze ja auch über die HTTP Live Headers des Mozilla gemacht um qausi die "Anfrage" eines Browser zu duplizieren mir der Hoffnung das geiche Ergebniss zu erhalten.

Dies hat bei anderen Seiten funktioniert nur halt hier nicht.
Ich wollte hier nicht so viel Aufwand reinstecken, aber wie es scheint werde ich mich doch tiefgründig mit JavaScript auseinandersetzen müssen oder hat hier wer eine "einfache Idee"?

Ansonsten wäre ich dankbar für Literatur oder Tutorials zu dem Thema direkt, was mir weiterhelfen könnten.
 
G

Guest

Gast
println hängt meines Wissens immer nen Zeilenumbruch mit an. Das könnt den Server evtl. verwirren.

Viel Glück :wink:
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Webformular auslesen Netzwerkprogrammierung 2
L webformular automatisch erstellen, senden und auswerten . Netzwerkprogrammierung 2
A Textfelder finden und im hintergrund ausfüllen? Netzwerkprogrammierung 3
B HTML Formularfelder erkennen und ausfüllen Netzwerkprogrammierung 3
P Webseite ausfüllen und abschicken Netzwerkprogrammierung 6
M webseite automatisch ausfüllen und abschicken Netzwerkprogrammierung 2
F http Post auf einen Grafana Server Netzwerkprogrammierung 3
S HTTP Post?!? - Java Server Netzwerkprogrammierung 7
O HTTP Bilderübergabe per POST Netzwerkprogrammierung 1
T HTTPS-Requests an Server: POST-Parameter kommen nicht an Netzwerkprogrammierung 5
N Post u Head Request an Server Netzwerkprogrammierung 4
F HTTP POST - "Already connected" Netzwerkprogrammierung 0
C Android: Json-POST Request zu REST Webservice Netzwerkprogrammierung 2
nrg FileUpload HTTP POST Netzwerkprogrammierung 5
R HTTP Post HTML Netzwerkprogrammierung 5
S HTTP Probleme mit POST-Befehl Netzwerkprogrammierung 2
D daten per post senden Netzwerkprogrammierung 3
B Post Request in Java Netzwerkprogrammierung 11
C HTTP POST Connect Netzwerkprogrammierung 9
I HTTP Post aus html in Java einlesen - Problem Netzwerkprogrammierung 2
I HTTP Post aus html in Java einlesen - Problem Netzwerkprogrammierung 6
T HTTP POST Request Netzwerkprogrammierung 3
C HTTP Studienarbeit Kommunikation via HTTP mit POST zwischen Server und Client Netzwerkprogrammierung 7
ARadauer POST Request absetzen.. Netzwerkprogrammierung 3
lordcarlos HTTP Apache HttpClient, post und login. Netzwerkprogrammierung 2
D Verbindung zu einem Server - POST Netzwerkprogrammierung 2
T HttpClient - Senden via Post Netzwerkprogrammierung 12
S HttpURLConnection POST splittet Daten in zwei Pakete Netzwerkprogrammierung 9
hdi POST Request (HttpConnection) Netzwerkprogrammierung 6
M Http POST liefert kryptischen Content Netzwerkprogrammierung 4
F POST-Daten sende Netzwerkprogrammierung 3
B Wie HTTP GET/POST Anfrage versenden? Netzwerkprogrammierung 7
N Per POST -Methode Daten an den Web-Server übertragen. Netzwerkprogrammierung 9
S Probleme beim senden von Daten per POST Methode an PHP Scrip Netzwerkprogrammierung 5
J 403 error bei POST request Netzwerkprogrammierung 3
J Post-Daten an URL schicken Netzwerkprogrammierung 2
E upload progress bei einem http file post Netzwerkprogrammierung 5
M erst POST dann Http-Request über URLConnection Netzwerkprogrammierung 3
G.I.Joe Datei per POST übertragen Netzwerkprogrammierung 2
J HTTP-POST-Request mit Anhang über Socket Netzwerkprogrammierung 2
E In Webseite einloggen/ GET, POST an PHP-Script übergeben Netzwerkprogrammierung 2
B totale HTTP/1.0 Verwirrung bei POST Netzwerkprogrammierung 5
S object via post auf servlet send und weiter bearbeiten Netzwerkprogrammierung 11
A daten an php script per post senden und ausgabe einlesen Netzwerkprogrammierung 6
O Per POST automatisch auf Website einloggen... Netzwerkprogrammierung 9
C POST-Parameter aus HTML-Script lesen Netzwerkprogrammierung 1

Ähnliche Java Themen

Neue Themen


Oben