Witam
Mam następujący problem, pisze program który loguje się do pewnej przegladarkowej gry (adres mozna wydlubac z IP lub screenow). Jego zadaniem będzie pobieranie aktualnych informacji po zalogowaniu.
Mam następujący problem wysyłam dane potrzebne do zalogowania się i potrzebuje zdobyć ciasteczko z sessionId. Całe połączenie obserwowałem w Wireshark i tutaj pare zrzutów ekranu
W pierwszym zrzucie wysyłam informacje z loginem i haslem do strony.
W chwili gdy w kodzie pojawia sie linia InputStream in = conn.getInputStream();
Wireshark pokazuje otrzymany pakiet
<font size="2">Jak widac ciasteczko z sessionId jest wysylane w tym pakiecie do mnie, czyli nie musze pobierac samemu ciasteczek ze strony.
Tu niestety pojawia sie problem, nie wiem jak wydlubac to ciasteczko.</span>
Poniżej Kod do wglądu jak to zrobiłem.
public void pobierzStrone(String strona, String stronaRef,Boolean print){
CookieManager manager = new CookieManager();
manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(manager);
try {
String parametry = URLEncoder.encode("username", "UTF-8")+"="+URLEncoder.encode(login, "UTF-8")+
"&"+URLEncoder.encode("password", "UTF-8")+"="+URLEncoder.encode(pass, "UTF-8")+"&"+URLEncoder.encode("submitForm", "UTF-8")+
"="+URLEncoder.encode("Login", "UTF-8");
System.out.println(parametry);
URL url = new URL(strona);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("POST");
conn.setDoOutput(true);
conn.setDoInput(true);
//conn.setAllowUserInteraction(false);
//conn.setDefaultUseCaches(true);
conn.setInstanceFollowRedirects(true);
conn.setRequestProperty("Host","www.tutaj_strona.pl");
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.0; pl; rv:1.8.0.11) Gecko/20070312 Firefox/1.5.0.11");
conn.setRequestProperty("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
conn.setRequestProperty("Accept-Language","pl,en-us;q=0.7,en;q=0.3");
conn.setRequestProperty("Accept-Encoding","gzip,deflate");
conn.setRequestProperty("Accept-Charset","ISO-8859-2,utf-8;q=0.7,*;q=0.7");
conn.setRequestProperty("Keep-Alive","300");
conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Refferer", stronaRef);
conn.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
conn.setRequestProperty("Content-length", parametry.length() + "");
conn.connect();
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream(), "UTF8");
wr.write(parametry);
wr.flush();
wr.close();
//System.out.println(getCookies(strona)); //nie ma tam sessionId
//System.out.println(getCookies(stronaRef)); //nie ma tam sessionId
InputStream in = conn.getInputStream(); // w tym momencie dostaje drugi pakiet z sessionId
// to co nizej zwraca mi jedynie kod zrodlowy strony :(
/* InputStreamReader isr = new InputStreamReader(in);
* BufferedReader br = new BufferedReader(isr);
* String linia;
* while ((linia=br.readLine())!=null) if (print) System.out.println(linia);
*/
conn.disconnect();
} catch (MalformedURLException e) {
e.printStackTrace();
}
catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
Dziękuję za wszelka pomoc, pozdrawiam