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, botów: 0