# HTTP POST Connect



## Chatman (1. Mai 2011)

Hallo zusammen,

bitte um Hilfestellung: Leider schaffe ich keine Http-Login (POST) mittels folgendem Programm:



```
package Netzwerk;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
import java.util.Scanner;

public class Post 
{
	
	public static void main( String... args ) throws Exception
	{
	  String body = "user" + URLEncoder.encode( "userXXX", "UTF-8" ) + "&" +
      "pass" + URLEncoder.encode( "passXXX", "UTF-8" );
  
	  URL url = new URL( "http://www.ringschuh.at/login.html" );

	  HttpURLConnection connection = (HttpURLConnection) url.openConnection();
	  connection.setRequestMethod( "POST" );
	  connection.setDoInput( true );
	  connection.setDoOutput( true );
	  connection.setUseCaches( false );
	connection.setRequestProperty( "Content-Type","application/x-www-form-urlencoded" );
	connection.setRequestProperty( "Content-Length", String.valueOf(body.length()) );
	
	OutputStreamWriter writer = new OutputStreamWriter( connection.getOutputStream() );
	writer.write( body );
	System.out.println( body );
	writer.flush();
	
	
	BufferedReader reader = new BufferedReader(
	                  new InputStreamReader(connection.getInputStream()) );
	
	for ( String line; (line = reader.readLine()) != null; )
	{
	System.out.println( line );
	}
	
	writer.close();
	reader.close();
	}
}
```

Vielen Dank!


----------



## FArt (1. Mai 2011)

Java Tips - How to perform form-based logon


----------



## Chatman (1. Mai 2011)

Danke für die Antwort - möchte allerdings dieses Problem ohne eine Apache Server Installation lösen....


----------



## Gast2 (1. Mai 2011)

Chatman hat gesagt.:


> Danke für die Antwort - möchte allerdings dieses Problem ohne eine Apache Server Installation lösen....



Was FArt da verlinkt hat, hat absolut gar nichts mit dem Apacher Webserver zu tun 

Es werden da nur die HttpClient Klassen aus dem Apache Project verwendet. Du brauchst nur die lib in dein Project einbinden:
HttpComponents - Apache HttpComponents


----------



## FArt (2. Mai 2011)

Chatman hat gesagt.:


> Danke für die Antwort - möchte allerdings dieses Problem ohne eine Apache Server Installation lösen....


Ich habe dir mit einem Link mehrere Hilfestellungen gegeben:
1.) Du sieht, dass man über Google und Foren viel finden kann. Einfach loslegen ist eher suboptimal.
2.) Du wurdest mit sinnvollen Suchbegriffen für eine Google-Suche ausgestattet, falls es bisher daran scheiterte
3.) Du siehst eine Beispielimplementierung
4.) Die Beispielimplementierung verwendet eine API (das ist ein wichtiger Tipp!)
5.) ...

Mir fällt noch mehr ein. Das ist somit besser als ein Überraschungsei... so viele Hinweise... mit nur einem Link...


----------



## Chatman (3. Mai 2011)

Leider habe ich Probleme beim import der angeführten .jar Files. 
(Googeln brachte mich nicht weiter..:rtfm

Folgende Imports funktionieren:
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory; 

Bei folgenden Imports werden Fehler angezeigt.(HttpComponents - Apache HttpComponents sind installiert)
import org.apache.commons.httpclient.*;
import org.apache.commons.httpclient.cookie.CookiePolicy;
import org.apache.commons.httpclient.cookie.CookieSpec;
import org.apache.commons.httpclient.methods.*;

Sämtliche jar Files wurden installiert und werden im Java Build Path angezeigt 
-> Java Build Path - Add Library - User Library - Add JARs!

Fehlermeldung: Import can not be resolved!;(


----------



## EdelStoff (4. Mai 2011)

Du musst noch die benötigten Lib's deinem Build Path hinzufügen.

Java Build Path -> Add External Jars -> Die benötigten .jar Dateien aus dem lib Ordner von dem heruntergeladenem Archive auswählen


----------



## Chatman (4. Mai 2011)

Das hab ich bereits durchgeführt - Import-Anweisungen werden leider nicht erkannt ???
(ich kann hier leider keine Grafik anfügen!)

Im Ordner Libraries sind nun sämtliche LIBS vorhanden + wie von EdelStoff vorgeschlagen Add External Jars hinzugefügt!


----------



## maki (4. Mai 2011)

Der Code passt nicht zur HttpClient Version.

Suche dir ein Beispiel zur der Version die du nutzt


----------



## Chatman (9. Mai 2011)

Hab mich jetzt einige Tage mit der Apache HttpClient Tutorial Doku beschäftigt. Sehr interessant. Leider schlägt mein Login auf dieser Seite immer noch fehl (Google funktioniert bereits ) Mein Hauptproblem dürfte sein keinen Aussagekräftigen Response zu erhalten um weiter anhand einer Fehlermeldung analysieren zu können....

Wer hat da Erfahrung ?

Als Response wird immer 200 ausgegeben obwohl die Anmeldung fehl schläft:

HTTP/1.1
200
OK
HTTP/1.1 200 OK





```
public class Ringschuh_Test {
	public static void main(String[] args) {
		
		HttpClient client = new DefaultHttpClient();
		HttpPost post = new HttpPost("http://www.ringschuh.at/login.html");

		try {
			// HTTP POST
			List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
			nameValuePairs.add(new BasicNameValuePair("user", "XXXXX"));
			nameValuePairs.add(new BasicNameValuePair("pass", "YYYYY"));
			nameValuePairs.add(new BasicNameValuePair("submit", "Anmelden"));
			System.out.println(nameValuePairs);
			post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
			
			HttpResponse response = client.execute(post);
			HttpEntity entity = response.getEntity();

			if (entity != null) {
			long len = entity.getContentLength();
			if (len != -1 && len < 2048) {
			System.out.println(EntityUtils.toString(entity));
			
			
			} else {
				// Ergänzen
			}
			
			System.out.println(response.getProtocolVersion());
			System.out.println(response.getStatusLine().getStatusCode());
			System.out.println(response.getStatusLine().getReasonPhrase());
			System.out.println(response.getStatusLine().toString());
		
			BufferedReader rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
			
						
			String line = "";	
			
			while ((line = rd.readLine()) != null) {
				System.out.println(line);
				
				if (line.startsWith("Auth=")) {
					String key = line.substring(5);
					// 
				}
			}
			}
		}
			 catch (IOException e) {
			e.printStackTrace();
		}
	}
```


----------

