Witam
Zakladalem juz taki temat kiedys kiedys, ale niestety nie otrzymalem odpowiedzi...
Teraz zacznę od nowa.
Mam taki oto "w pelni dzialajacy" kod:
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.CookieHandler;
import java.net.CookieManager;
import java.net.CookiePolicy;
import java.net.CookieStore;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.Iterator;
import java.util.List;
public class Tester2 {
public void polacz() {
CookieManager manager = new CookieManager();
manager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
CookieHandler.setDefault(manager);
try {
String parametry = URLEncoder.encode("username", "UTF-8") + "="
+ URLEncoder.encode("zalany__czeslaw", "UTF-8") + "&"
+ URLEncoder.encode("password", "UTF-8") + "="
+ URLEncoder.encode("h89sda89hsd8h9sd", "UTF-8") + "&"
+ URLEncoder.encode("submitForm", "UTF-8") + "="
+ URLEncoder.encode("Login", "UTF-8");
String urlRef = "http://www.menelgame.pl/";
URL url = new URL("http://www.menelgame.pl/login/check/");
URLConnection connUrl = url.openConnection();
HttpURLConnection conn = (HttpURLConnection) connUrl;
conn.setInstanceFollowRedirects(true);
conn.setDoOutput(true);
conn.setDoInput(true);
conn.setRequestMethod("POST");
conn.setRequestProperty("Host" , "www.menelgame.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", urlRef);
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(conn.getHeaderFields());
CookieStore cookieJar = manager.getCookieStore();
List cookies = cookieJar.getCookies();
Iterator aa = cookies.iterator();
while (aa.hasNext())
System.out.println(aa.next());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
Tester2 t2 = new Tester2();
t2.polacz();
}
}
Wynikiem działania tego kodu jest uzyskanie nastepujacego ciasteczka "Set-Cookie=[__uvpg=1256164389.0"
Nie jest to odpowiednie ciasteczko, odpowiednie ciasteczko potrzebne do zalogowania wyglada tak
"sessionid_pl_PL=93b364781e5f820d649588748c303457;"
Przebieg programu podgladalem spod wireShark:
Wazne pakiety zaznaczylem na zółto
Pierwszy pakiet to wysłanie danych do logowania
Drugi pakiet jest to pakiet który chce zdobyc, zawiera on w sobie sessionid
Trzeci pakiet jest to pakiet który zdobywam przy wywolaniu System.out.println(conn.getHeaderFields());
Probowalem juz wielu sztuczek ale za cholere nie potrafie zdobyc odpowiedniego ciasteczka, doszedlem do wniosku ze byc moze jest to problem z obslugą(lub jej brakiem) redirectu.
Jak widac w kodzie uzylem cookie manager, ale on tez cos nie dziala, w kazdym badz razie nie zdobywa zadnych ciasteczek :(
Dzieki za ewentualną pomoc
Pozdrawiam