HTTP - metoda GET problem

0

Witam. Mam do Was takie pytanie.
Nadziergałem troszke kodu i logowanie na strone za pomoca metody POST dziala. Uzytkownik sie loguje.
Teraz mam pytanie odnosnie metody GET.
key1=value1l&key2=value2&key3=value3 tak wyglada dalsza czesc linku.

jak za pomoca metody GET wyslac tam wlasne wartosci ?? Mam cos takiego

Socket socket = new Socket(addr, port);
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
// WYSYLAM GETem
wr.write("GET /katalog.php?key1=value1l&key2=value2&key3=value3 HTTP/1.1\r\n");
wr.write("Connection: close\r\n");
wr.write("Host: "+hostname+"\r\n");
wr.write("Content-Type: text/html\r\n");
wr.flush(); 

To niestety nie dziala ;x. Nie wiem dlaczego i co jest zle, poniewaz na serwerze nie dzieje sie nic. Nie dostaje zwrotnej wiadomosci, wiec wnioskuje ze cos zle wysylam.
Prosze o pomoc w rozwiazaniu problemu

0

wydaje mi sie ze zakonczenie naglowkow jest w momencie wyslania podwojnego \r\n, czyli przed flush daj:
wr.write("\r\n");

0

Racja, brakuje wr.write("\r\n");
Jednakze w dalszym ciagu nie dziala

0

Sprawdź czy Socket jest poprawny, czyli czy udało nawiązać się połączenie. Pamiętaj, żeby host ustawić na np.: google.pl , a nie żadne google.pl/... i bez żadnych http:// z przodu a port na 80

0
String data = URLEncoder.encode("value", "UTF-8") + "=" + URLEncoder.encode(LOGIN, "UTF-8");
		    data += "&" + URLEncoder.encode("value", "UTF-8") + "=" + URLEncoder.encode(PASSWORD, "UTF-8");

		    // Create a socket to the host
		    String hostname = "strona.pl";
		    int port = 80;
		    InetAddress addr = InetAddress.getByName(hostname);
		    Socket socket = new Socket(addr, port);

		    // Send header
		    String path = "/strona.php";
		    BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
		    wr.write("POST "+path+" HTTP/1.1\r\n");
		    wr.write("Host: "+hostname+"\r\n");
		    wr.write("User-Agent: TwojaStara/1.0\r\n");
		    wr.write("Content-Length: "+data.length()+"\r\n");
		    wr.write("Content-Type: application/x-www-form-urlencoded\r\n");
		    wr.write("\r\n");

		    // Send data
		    wr.write(data);
		    wr.flush();

		    // Get the response
		    BufferedReader read = new BufferedReader(new InputStreamReader(socket.getInputStream()));
		    String line;
		    while ((line = read.readLine()) != null)
		    {
		    	System.out.println(line);
		    }

Tak wyglada logowanie czyli metoda post i to dziala

0
wr.write("GET "+path+" HTTP/1.1\r\n");
wr.write("User-Agent: Fiddler\r\n");
wr.write("Connection: keep-alive\r\n");
wr.write("Host: adres.pll\r\n");
wr.write("\r\n");
wr.flush();

Miło udało sie w koncu przy uzyciu geta. Jest inny problem. Jak zrobić aby sesja nie wygasała? Czy przy uzyciu metody post trzeba cos jeszcze wysłac? A moze stworzyc jakies cookiesy ? Bo w przeciwnym wypadku metoda POST sie loguje, a nastepnie wyslanie GET;em w odpowiedzi dostaje " prosze sie zalogowac"

Tak jak sadzilem trzeba bylo utworzyc i przeslac plik cookies. Wszystko smiga, podtrzymanie sesji ;] Dzieki za pomoc

0

Jeśli chcesz robić bota www, to mógłbyś przynajmniej nauczyć się czegoś o http najpierw...
serwer w odpowiedzi wysłał Ci cookies, musisz mu je wysłać w każdym zapytaniu, żeby mógł Cię rozpoznać...

1 użytkowników online, w tym zalogowanych: 0, gości: 1