HTML-Seite vom Server holen

Status
Nicht offen für weitere Antworten.

caesarem

Mitglied
Hallo !

Folgendes Problem:
Ich würde gerne aus einer Java-Application heraus den Inhalt bzw. die Antwort einer PHP-Datei auf einem entfernten Server auslesen.

In einem Handbuch zu Java hab ich ein ähnliches Beispiel gefunden, was dort anscheinend auch funktioniert, nur bei mir klappt es irgendwie nicht :wink:

Code:
try { //Verbindung mit dem Webserver herstellen
      Socket sock = new Socket("domain.net", 80); //Hier die Domain eintragen
      OutputStream out = sock.getOutputStream();
      InputStream in = sock.getInputStream();
      String s = "GET " + "/se_getter.php?user="+user+"&pwc="+pwc+"&spn="+spn+" HTTP/1.0" + "\r\n\r\n";
      out.write(s.getBytes());      
      int len;
      byte[] b = new byte[100];
	  RandomAccessFile datei = new RandomAccessFile( "temp.txt", "rw" ); 
	  datei.seek(0);  //Daten vom Server werden in eine temp. Datei geschrieben
      while ((len = in.read(b)) != -1) {datei.write(b,0,len); }
	  datei.close(); in.close(); out.close(); sock.close();
      } catch (IOException ex) {
      System.err.println(ex.toString());
      System.exit(1);}

Die Domain "domain.net" habe ich natürlich ersetzt.

Ein manueller Aufruf der Datei se_getter.php mit den entsprechenden Argumenten funktioniert auch, die Daten werden korrekt übertragen.
Bei einem Aufruf aus der Application heraus, liefert der Server jedoch einen "ForbiddenError" als Inhalt der Temp-Datei...

Woran kann das liegen ?

mfg
CAESAREM
 
hmjaa da gibts so einige problem die manchmal auftauchen mit Sockets, dafrum würde ich Sockets nicht für simple http requests verwenden. folgendes ist die einfachere art:

Code:
try {
URL u = new URL("http://www.domain.net/file.php");
HttpURLConnection c = (HttpURLConnection) u.openConnection();
InputStream is = c.getInputStream();
StringBuffer sb = new StringBuffer(c.getContentLenght());
int len;
byte b = new byte[1024];
for((len = is.read(b)) != -1) {
sb.append(b);
}
} catch(Exception ex) {
ex.printStackTrace();

das sollte ungefähr so gehen, habich jetzt nur so dahingekritzelt.
 
Vielen Dank! Mit ein paar kleinen Änderungen funktioniert das.

Problem: das Versenden der Daten per Post kann ich dann auch vergessen, weil das über Sockets nicht klappt.

Code:
String s = "POST /se_poster.php HTTP/1.1\r\n"+
	                "Host: domain.de\r\n"+
					"Content-type: application/x-www-form-urlencoded\r\n"+
					"Content-length: "+(uebergabe.length())+"\r\n"+
					"Connection: close\r\n\r\n"+uebergabe;

Idee ?

mfg
CAESAREM
 
Oje, ich glaube, daraus wird eine neue Anfängerfrage 🙁

Wie erstelle ich denn so ein Jar-Archiv und was muss da alles rein ?

mfg
CAESAREM
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben