post daten übertragen / einloggen

@MeinerEiner
Ich schätze mich schon so ein, dass ich ein bisschen Ahnung habe :)
Naja..hatten benötigte Klassen gefehlt und ich hatte diese einfach nicht gefunden. Mittlerweile ist das kein Problem mehr.

Aber es läuft immer noch nicht, bzw. trägt die Werte nicht ein. Hab mich jetzt am HTTPClient versucht und hab's zusätzlich wie den obigen Posts beschrieben probiert.

Hab dazu folgendes Fomular benutzt (test.php):
HTML:
<form action="next.php" method="post">
	<input type="text" name="test">
	<input type="submit" name="anlegen" value="anlegen">
</form>

Und mein Java-Code sieht so aus:
Code:
try {
	URL url = new URL("http://MEINEURL.de/test.php");
	HttpURLConnection connection = (HttpURLConnection)url.openConnection();
	connection.setDoInput(true);
	connection.setDoOutput(true);
	connection.setRequestMethod("POST");
	connection.connect();

	PrintStream out = new PrintStream(connection.getOutputStream());
	out.print("test=Hallo&anlegen=anlegen");
	out.close();
		  	
        BufferedInputStream in = new BufferedInputStream(connection.getInputStream());
	int character;
	while((character = in.read()) != -1){
		System.out.print((char) character);
	}			
}
catch (MalformedURLException e) {
	System.err.println(e);
} 
catch (IOException e) {
	System.err.println(e);
}

Oder mit HTTPClient:
Code:
HttpClient client = new HttpClient();
		
client.getHostConfiguration().setHost("www.MEINEURL.de", 80, "http");
		
		client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
PostMethod post = new PostMethod("/test.php");
		
post.addParameter("test", "Hallo");
client.executeMethod(post);
        
System.out.println(post.getResponseBodyAsString());

Was mache ich falsch? Hoffe mir kann jemand weiterhelfen!
 
Hallo Tom!
Danke deines Codes konnte ich automatisch auf die Seite"www.Tutorials.de" Anmelden und die Seite mit meine spezifischen Daten ohne manuellen Anmelden auf Android darstellen.

Ich will das gleiche mit Xing-Seite erreichen, aber leider bekomme ich das nicht hin.

--------------------------- Html-Code: Loing für Xing ---------------------------------
<form id="login-form" action="https://www.xing.com/app/user" method="post" name="loginform">
<input type="hidden" name="op" value="login" />
<input type="hidden" name="dest" value="/app/user?op=home" />

<label id="username-label" for="username">Benutzername / E-Mail-Adresse</label>
<input id="username" type="text" name="login_user_name" value="" maxlength="80" tabindex="201" />

<label id="password-label" for="password">Passwort</label>
<input id="password" type="password" name="login_password" value="" maxlength="25" tabindex="202" />
--------------------------- Html-Code: Loing für Xing ---------------------------------

Ich habe folgenden Parameter an postMethod angehängt:

Postmethod postMethod = new PostMethod("/app/user?");
postMethod.addParameter("username","xxxxxxxxx");
postMethod.addParameter("password","xxxxxxxx");
postMethod.addParameter("op","login");
client.executeMethod(postMethod);

WebView view = new WebView();
view.getSettings().setJavaScriptEnabled(true);
view.loadData(postMethod.getResponseBodyAsString(),"text/html","utf-8");
this.setContentView(view);

liegt an Cookies oder habe ich die falsche parameters zu postMethod angehängt?

Ich würde mich seh freuen für jede Hilfe.

Gruß + Danke
HichamID
 
bastle auch gerade an dem HTTPClient herum und musste fest stellen das das beispiel von tom bei mir nicht funktioniert...

und meine eigenes programm schaut so aus und geht auch ned:

Sourcecode der login seite:

nbsp; <b>Einloggen:</b><br>
<input type=hidden name=name value=AndyLogin>
<input type=hidden name=action value=dologin>
&nbsp; Benutzername:<br>
&nbsp; <input type=text name=uname maxlength=25 size=15><br>
&nbsp; Kennwort:<br>

&nbsp; <input type=password name="pass" size=15><br>
&nbsp; <input type=checkbox name=rememberme checked> dauerhaft<br>
&nbsp; <input type=submit value=Einloggen><br>
</form>

try
{

HttpClient client = new HttpClient();



GetMethod getMethod1 = new GetMethod("http://www.webseite.de/index.php");

client.executeMethod(getMethod1);

PostMethod postMethod1 = new PostMethod("http://www.webseite.de/index.php");

postMethod1.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);

postMethod1.addParameter("uname", "xxx");
postMethod1.addParameter("\"pass\"", "xxx");
postMethod1.addParameter("rememberme","checked");
postMethod1.addParameter("name","AndyLogin");
postMethod1.addParameter("action","dologin");
postMethod1.addParameter("","Einloggen");


client.executeMethod(postMethod1);

System.out.println("Login");


GetMethod getMethod2 = new GetMethod("http://www0.webseite.de/user/119187");
client.executeMethod(getMethod2);

System.out.println("Aufruf nach Login");

System.out.println(getMethod2.getResponseBodyAsString());

String s2 = getMethod2.getResponseBodyAsString();


if(s2.contains("logout")){

System.out.println("hurrra");

}else{

System.out.println("böhhhh");

}


was mach ich falsch? :(
 
Hallo,

hier auf speziellen Wunsch ein Beispiel für Post Login mit Commons Http Client in Version 4.1.1:
Java:
package de.tutorials;

import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

public class CommonsHttpClient4PostLoginExample {
	public static void main(String[] args) throws Exception {

		
		
		
		HttpPost request = new HttpPost("http://www.tutorials.de/login.php?do=login");
		
		new PostParams()
				.add("do","login")
				.add("securitytoken","xxx") //Wird zuvor in Seite generiert
				.add("s", "")
				.add("vb_login_md5password", "yyy") //MD5 hash des Passworts
				.add("vb_login_md5password_utf","yyy") //MD5 hash des Passworts als UTF (sollte in der Regel mit vb_login_md5password übereinstimmen 
				.add("vb_login_password", "")
				.add("vb_login_password_hint", "Kennwort") //ja das steht da wirklich...
				.add("vb_login_username", "DEIN USERNAME")
		.to(request);

		HttpClient httpClient = new DefaultHttpClient();
		HttpResponse response = httpClient.execute(request);

		HttpEntity responseEntity = response.getEntity();
		String responseBody = EntityUtils.toString(responseEntity);
		System.out.println(responseBody);

	}

	static class PostParams {

		LinkedHashMap<String, String> values = new LinkedHashMap<String, String>();

		public PostParams add(String name, String value) {
			values.put(name, value);
			return this;
		}

		public void to(HttpPost request) {
			List<NameValuePair> params = new ArrayList<NameValuePair>();

			for (String name : values.keySet()) {
				params.add(new BasicNameValuePair(name, values.get(name)));
			}

			try {
				request.setEntity(new UrlEncodedFormEntity(params,HTTP.ISO_8859_1)); //application/x-www-form-urlencoded
			} catch (UnsupportedEncodingException ex) {
				ex.printStackTrace();
			}
		}
	}
}

Gruß Tom
 
Zurück