# java soll daten an php senden



## Guest (18. Apr 2007)

hallo,

ich habe ein Java Applet welches Daten an eine php seite "test.php" weitergeben soll:
Kann mir jemand sagen was ich falsch mache ?
meine php seite erhällt die Daten nicht.

Ist es normal das ich mit url.getPort() -1 erhalte ?
müßte doch 80 sein bei HTTP

Das ganze läuft über Proxy Server

"UrlPost"

```
import java.applet.*;
import java.net.*;
import java.io.*;

public class UrlPost
extends Applet{

	String data=URLEncoder.encode("string=test");
		
	public void init(){
		try{
			URL url=new URL("http://www.myurl.be/java/test.php");
			
			System.out.println("protocol: "+url.getProtocol());
			System.out.println("host: "+url.getHost());
			System.out.println("port: "+url.getPort());
			System.out.println("path: "+url.getPath());
			System.out.println("file: "+url.getFile());
			System.out.println("ref: "+url.getRef());
			
			URLConnection urlcon=url.openConnection();
			urlcon.setDoOutput(true);
			OutputStream out=urlcon.getOutputStream();
			out.write(data.getBytes());
			out.flush();
			out.close();
			
			System.out.println("daten wurden gesendet");
		}
		catch(IOException e){
			System.out.println("KO");
		}
	}
}
```

"test.php"

```
<?php

$str='POST'.$_POST['string'];
mail('my@email.com','UrlPostString','text'.$str);

?>
```


Ergebnis in der Konsole:
===========================================
MRJ Plugin for Mac OS X v1.0.1
[starting up Java Applet Security @ Wed Apr 18 10:47:35 CEST 2007]
Wed Apr 18 10:47:36 CEST 2007 JEP creating applet UrlPost (http://www.meinurl.be/java/)
protocol: http
host: www.meinurl.be
port: -1
path: /java/test.php
file: /java/test.php
ref: null
daten wurden gesendet
===========================================


----------



## Guest (18. Apr 2007)

finde zum verrecken nicht wo das problem liegt.

das muss doch jemand wissen


----------



## Guest (18. Apr 2007)

ist es richtig programmiert ?


----------



## Ariol (18. Apr 2007)

versuch mal den Port auf 80 zu stellen, an port -1 kann ja nix passieren.

(bitte berichtigen, wenn ich damit falsch lieg)


----------



## Guest (19. Apr 2007)

Ich habe jetzt mal den HTTP Port angegeben und es mit der Klasse HttpURLConnection versucht.

Außerdem habe ich das Applet auf der Arbeit (mit Proxy Server) und zuhause (direkte Internetverbindung) getestet.
Beides geht nicht.

Damit wir uns richtig verstehen, wenn es funktioniert soll die Seite test.php aufgerufen werden und den PHP code verarbeiten. Oder wird die Seite nicht so aufgerufen wie im Browser, sprich die Variablen werden nur zwischen java und PHP hin und her gesendet und mehr nicht.

Wäre sehr dankbar wenn sich mal jemand die mühe machen würde dieses Applet zu testen.
Habe mir schon etliche Websites und Tutorials dazu angeschaut, aber nichts bringt micht weiter.



```
import java.applet.*;
import java.net.*;
import java.io.*;

public class UrlPost
extends Applet{

	String data="string=test";
	HttpURLConnection connection=null;
	URL url;
	
	public void init(){
		try{
			URL url=new URL("http://www.myurl.com:80/java/test.php");
			
			System.out.println("protocol: "+url.getProtocol());
			System.out.println("host: "+url.getHost());
			System.out.println("port: "+url.getPort());
			System.out.println("path: "+url.getPath());
			System.out.println("file: "+url.getFile());
			System.out.println("ref: "+url.getRef());
			
			connection=(HttpURLConnection)url.openConnection();
			connection.setRequestMethod("POST");
			connection.setDoOutput(true);
			PrintStream out=new PrintStream(connection.getOutputStream());
			out.write(data.getBytes());
			out.flush();
			out.close();
		}
		
		catch (MalformedURLException e){
			e.printStackTrace();
		}
		
		catch (IOException e){
			e.printStackTrace();
		}
	}
}
```

Die Konsole sagt:
======================================================
MRJ Plugin for Mac OS X v1.0.1
[starting up Java Applet Security @ Thu Apr 19 09:30:01 CEST 2007]
Thu Apr 19 09:30:02 CEST 2007 JEP creating applet UrlPost (http://www.myurl.com/java/)
protocol: http
host: www.myurl.com
port: 80
path: /java/test.php
file: /java/test.php
ref: null
======================================================


----------



## Guest (19. Apr 2007)

ich habe mal gerade versucht Daten zu empfangen.

Geht ohne Probleme, aber Daten senden und die Seite aufrufen so der PHP code ausgeführt wird geht nicht !?


```
import java.applet.*;
import java.net.*;
import java.io.*;

public class UrlRead
extends Applet{

	String data="string=test";
	HttpURLConnection connection=null;
	URL url;
	
	public void init(){
		try{
			url=new URL("http://www.myurl.be:80/java/read.php");
			BufferedReader input=new BufferedReader(new InputStreamReader(url.openStream()));
			String zeile;
			
			while((zeile=input.readLine())!=null){
				System.out.println(zeile);
			}
			input.close();
        	}
		
		catch (MalformedURLException e){
			e.printStackTrace();
		}
		
		catch (IOException e){
			e.printStackTrace();
		}
	}
}
```


----------



## Guest (20. Apr 2007)

Wie siehts aus ?

Weiß da wirklich keiner bescheid ?

Wird der PHP Code ausgeführt in meinem Fall oder werden nur die Daten ausgetauscht ?


----------



## André B. (20. Apr 2007)

Das kannst du doch ganz leicht herausfinden. Du musst einfach nur ein bissl mehr zum Debuggen einbauen. Also z.B. ein paar Zeilen im PHP Script, die, wenn das Script aufgerufen wird, vielleicht den Header der Anfrage oder so in ne Textdatei schreiben. Dann hättest du schonmal überprüft, wes überhaupt alles von deiner Anfrage ankommt. 
MfG André


----------



## Guest (23. Apr 2007)

Wie du ganz oben lesen kannst habe ich bereits was in die Seite test.php eingebaut !
Dort soll ein E-mail mit der Variablen aus java an mich gesendet werden.

Ich habe die Seite schon einzeln im browser aufgerufen und das benachrigen per E-mail funktioniert.

Wenn das Applet die Seite jetzt aufrufen würde, müßte ich zumindest eine E-mail mir subject "UrlPostString" bekommen.

Da das aber nicht der fall ist geh ich davon aus das java das nicht tut !

"test.php":

```
<?php

$str='POST'.$_POST['string'];
mail('my@email.com','UrlPostString','text'.$str);

?>
```


----------



## André B. (23. Apr 2007)

Ok. Ich habe die Antwort auf deine Frage in dem Sun Java Forum gefunden: http://forum.java.sun.com/thread.jspa?threadID=420176&tstart=270
Zusammengefasst: Er sendet deinen Request erst, wenn du dir mit HttpURLConnection#getInputStream() den InputStream holst 
=> Deine Anfrage ist nie bei deinem PHP Script angekommen. Habs probiert: 
	
	
	
	





```
import java.io.*;
import java.net.*;

public class PHPSend
{

	static String data = "pass=test";
	static HttpURLConnection connection = null;
	static URL url;

	public static void main(String[] args)
	{
		try
		{
			URL url = new URL("http://localhost:81/md5.php");

			System.out.println("protocol: " + url.getProtocol());
			System.out.println("host: " + url.getHost());
			System.out.println("port: " + url.getPort());
			System.out.println("path: " + url.getPath());
			System.out.println("file: " + url.getFile());
			System.out.println("ref: " + url.getRef());

			connection = (HttpURLConnection) url.openConnection();
			connection.setRequestMethod("POST");
			connection.setDoOutput(true);
			PrintStream out = new PrintStream(connection.getOutputStream());
			out.write(data.getBytes());
			out.flush();
			out.close();
			BufferedReader input = new BufferedReader(new InputStreamReader(connection.getInputStream()));
			String zeile;

			while ((zeile = input.readLine()) != null)
			{
				System.out.println(zeile);
			}
			input.close();
		}

		catch (MalformedURLException e)
		{
			e.printStackTrace();
		}

		catch (IOException e)
		{
			e.printStackTrace();
		}
	}

}
```

ps: Quick and Dirty


----------



## Guest (23. Apr 2007)

1000 Dank,

hat mir sehr weitergeholfen.


----------

