# Daten, die mit PHP erzeugt werden, mit Java auslesen



## Der Neue (14. Sep 2008)

Hi Leute,

ich hab sowohl Google als auch die Sufu genutzt, bin aber aus keinem der beiden schlau geworden.
Ich hab schon gesehen, dass ich mit Java HTML-Daten einlesen kann. 
Jetzt wollt ich fragen ob es auch möglich ist das ich eine URL angebe z.B. www.domain.de/somedata.php und die PHP-Datei dann vom Webserver ausgewertet wird (mit Datenbankabfragen und allem) und mir die Daten ausspuckt. Außerdem sollen der PHP-Datei noch POST-Daten übergeben werden.

Das ganze hat den Sinn, dass ich dann Daten die vom Programm erzeugt werden in eine Datenbank, die auf einem Webspace liegt, gespeichert werden.

Ist das generell möglich und wenn ja wie setzt ich das Programmiertechnisch um?

Ach und versteht mich bitte nicht falsch ich will hier kein Tutorial von euch, Denkanstöße bzw. Tipps in die richtige Richtung reichen mit vollkommen.

Mfg Der Neue


----------



## musiKk (14. Sep 2008)

Ich verstehe "und die PHP-Datei dann vom Webserver ausgewertet wird" nicht ganz. Wenn du eine Anfrage an den Webserver stellst (sei es GET oder POST), dann wird immer erst die PHP-Datei ausgewertet und das Resultat verschickt. An die PHP-Datei an sich kommst du in keinem Fall (außer der Server spinnt oder so...).

POST-Anfragen kannst du über setRequestMethod("POST"); der Klasse HttpURLConnection stellen. Laut diesem Beispiel muss man den Query-String selbst zusammenbasteln und in den OutputStream schreiben.


----------



## Guest (14. Sep 2008)

Das ich nicht an die PHP Datei komm ist mir schon klar.
Was ich will ist, dass ich eine URL zu einer PHP-Datei angebe, POST Daten mitschicke und die PHP Datei dann anhand der POST Daten wie z.B. Nickname und Passwort mir die ID zurückgibt. Sprich einfach in den Quellcode schreibt und ich lese den Quellcode dann wieder aus.

Mfg Der Neue


----------



## musiKk (14. Sep 2008)

Nagut, ja. Wie man POST-Fragen mitschickt, lässt sich dem Beispiel entnehmen und der Rest ist dann ein PHP- und kein Java-Problem.


----------



## Guest (14. Sep 2008)

Ähmm naja wie man es sieht.
PHP beherrsche ich sehr gut, aber in JAVA bin ich noch ein ziemlicher Neuling.
Soll heißen mit dem Beispiel kann ich nicht wirklich was anfangen.

Vielleicht könntest du mir ein paar Überbegriffe mit denen ich mich beschäftigen sollte hinwerfen (vielleicht nicht gerade Netzwerkprogrammierung  ). Oder vielleicht hat einer von euch auch zufällig ein paar Links zu Tutorials in der Hand. Wenn man sich länger mit einer Programmiersprache beschäftigt hat man ja meistens ein ganzen Fundus an Infos. Ich bin wie gesagt noch ziemlich neu im Java Bereich.

Mfg Der Neue


----------



## musiKk (14. Sep 2008)

Ok. Also prinzipiell sind die SUN Java Tutorials immer eine gute Adresse.

Für einen generellen Einstieg in die Sprache einfach mal so rumgucken, das habe ich damals mit einem Buch gelernt. Das kostenlose Inselbuch wird meist empfohlen.


----------



## Guest (14. Sep 2008)

Ohh sorry ich hab mich falsch ausgedrückt.
Mit "ich bin ein Neuling" hab ich nicht gemeint, dass ich gerade erst in die Sprache einsteige.
Das Inselbuch wie du es nennst hab ich schon seit Wochen als Openbook auf meinem PC und schon fast durchgemacht, ich kann also in Java programmieren, ich hab nur noch keine Erfahrung damit.

Das Sun eine Anlaufstelle ist, ist mir auch wohl bekannt, nur mein Englisch ist nicht das beste womit diese Quelle wohl leider wegfällt.

Was ich suche sind spezielle Tutorials, Links oder Berichte über die Möglichkeiten, den Quelltext den PHP-Dateien erzeugen (mit vorhergehender POST-Datenübergabe), auszulesen.

Mfg Der Neue


----------



## musiKk (14. Sep 2008)

Nach Tutorials müsste ich auch suchen. Ich hab das Beispiel oben mal aufs wesentliche reduziert:

```
public static void main(String[] args) throws Exception {
	
	URL url = new URL("http://192.168.65.131/test.php");
	
	HttpURLConnection huc = (HttpURLConnection)url.openConnection();
	huc.setDoOutput(true);
	
	huc.setRequestMethod("POST");
	DataOutputStream out = new DataOutputStream(huc.getOutputStream());
	out.writeBytes("var1=asdf");
	out.flush();
	
	BufferedReader br = new BufferedReader(new InputStreamReader(huc.getInputStream()));
	
	String s = null, result = "";
	while((s = br.readLine()) != null) {
		result += s;
	}
	System.out.println(result);
	
}
```
Die zugehörige PHP-Datei lautet einfach nur:

```
<?php
$foo = $_POST['var1'];
echo $foo;
```
Zuerst wird ein URL-Objekt mit dem Ziel erstellt. Dann wird daraus eine Verbindung geöffnet. Weil es HTTP ist, kann die URLConnection nach HttpURLConnection gecastet werden.
setDoOutput(true) erlaubt uns, in die Verbindung zu schreiben.
Mittels setRequestMethod("POST") aktivieren wir POST.
Dann holen wir uns den OutputStream, um die POST-Daten zu übersenden (und tun das auch, flush() nicht vergessen).
Tja... und dann schauen wir uns an, was der Server dazu so zu sagen hat.

Wenn da nicht nur die eine Zeile kommt, sondern eine größere HTML-Datei, die es zu parsen gilt, dann gibt es diverse Parser im Netz, ich verwende diesen.


----------



## Guest (14. Sep 2008)

WOW Top danke für die Mühe, habs getestet und es läuft perfekt.

Problem wäre damit gelöst.

Mfg Der Neue


----------

