# Probleme beim senden von Daten per POST Methode an PHP Scrip



## Sgoda (16. Sep 2008)

Hallo zusammen,
ich bin dabei ein Programm zu schreiben, das u.a. einem PHP Script eines Boards, das auf dem PHPBB3 basiert, Daten senden soll.
Dies mache ich mit folgender Methode (nutzt die HttpClient Klassen der Jakarta Commons:


```
static void send(String data){
		
		HttpClient client = new HttpClient();
		PostMethod method = new PostMethod("http://localhost/dsphpbb/ajax.php");
		
		try{
			  NameValuePair username   = new NameValuePair("username", "Sgoda");
	        NameValuePair pass      = new NameValuePair("pass", "PASSWORT");
	        NameValuePair action   = new NameValuePair("action", "add_res");
	        NameValuePair koor = new NameValuePair("Koor", "595|321");
	        NameValuePair comment = new NameValuePair("comment", "");
	        method.setRequestBody( 
	          new NameValuePair[] {username, pass, action, koor, comment});
	        
	        client.executeMethod(method);
	        System.out.println("Login form post: " + method.getStatusLine().toString()); 
	        
		     byte[] responseBody = method.getResponseBody();
		     System.out.println(new String(responseBody));
		} 
		catch (HttpException e) {
		      System.err.println("Fatal protocol violation: " + e.getMessage());
		      e.printStackTrace();
		} 
		catch (IOException e) {
		      System.err.println("Fatal transport error: " + e.getMessage());
		      e.printStackTrace();
		}
		finally {
		      method.releaseConnection();
		}  
	}
```

Dadurch sollte das Script einer Datenbank einen neuen Eintrag hinzufügen und eine Statusmeldung ohne jeglichen HTML Code ausgeben.

Stattdessen erhalte ich jedoch den HTML Code einer Seite, die erscheint wenn man diese Aktion durchführt ohne eingeloggt zu sein.
Wenn ich jedoch ein falsches Passwort oder einen nicht-existenten Usernamen verwende, erhalte ich einfach nur [], was so auch sein soll.

Der Fehler liegt nicht im PHP Script, denn wenn man das Ganze per Hand macht, funktioniert es.
Ich habe sowohl eine Variante mit POST, als auch eine mit GET ausprobiert, da beides vom Script unterstützt wird, erhalte aber bei beidem das gleiche Ergebnis.

Mit der GET Methode habe ich den String "username=Sgoda&pass=PASSWORT&action=add_ress&koor=595|321&comment=" per HttpConnection und OutputStream an die im Code enthaltene URL gesendet.

Insofern denke ich, dass der Fehler in meiner Methode liegt und hoffe, dass mir jemand von euch helfen kann.
Gruß,
Sgoda


----------



## Sgoda (16. Sep 2008)

Sorry wegen des Doppelposts, aber da ich nicht registriert bin kann ich nicht editieren.

Also ich habe die Vermutung, dass das bisher so nicht klappt, da ja vom Script ein Cookie mit der Session ID gesetzt wird und ich diese Session ID in irgendeiner Form brauche. Der Cookie wird ja im Header mitgesendet, ich kann ihn also auslesen.
Ich habe nur keinerlei Ahnung, wie mich das bei der Lösung des Problems weiterbringt, vielleicht weiß einer von euch mehr?


----------



## Gast (16. Sep 2008)

Ich hab mal sowas ähnliches gemacht, als ich etwas mit der Jakarta commons gespielt habe. Schau doch mal den Quelltext des Forums an, ob die die richtigen Variablen sendest, oder ob du vielleicht eine übersehen hast. Daran könnts nämlich liegen.


----------



## pc-world (17. Sep 2008)

Schalte doch mal in deinem Browser die Cookies ab, probier es dann nochmal mit dem Browser und schau, ob es dann immer noch funktioniert!
Wenn nicht, hast du das Problem gefunden.


----------



## Sgoda (17. Sep 2008)

Habe das Problem mittlerweile gelöst.
Man brauchte auf jeden Fall eine gültige SID, die entweder aus Cookies oder aus $_GET gelesen wird vom Forum.
Ich hab das jetzt so gelöst, dass ich mir erst eine gültige SID zurückgeben lasse und diese dann mit dem eigentlichen Request mitschicke. Blöderweise wird bei der Authentifizierung nur ein Cookie mit der SID gesetzt, das ich mit Java nicht auslesen kann bzw. ich weiß nicht wie es geht, wenn es geht.
Letztendlich musste ich zwar noch 3-4 Zeilen im Forums-Code ändern, damit ich möglichst unkompliziert die SID zurückgegeben bekomme, aber zum Glück bin ich ja auch der Admin des Forums


----------



## HoaX (18. Sep 2008)

schau doch mal auf die seite vom httpclient, der kann auch mit cookies umgehn, man muss es ihm nur sagen


----------

