Eae pessoal, to com o seguinte problema…
estou fazendo um “robô” em java que entra em um site da web e faz algumas pesquisas nele.
Para poder fazer essas pesquisas no site eu preciso estar logado nele…
Eu consigo logar no site, acessando uma url (login.aspx). O problema é que para as próximas páginas que eu chamo eu não tenho mais a sessão que foi logada e então o site pede para que eu logue novamente.
Estava olhando os cookies que o site seta, ele tem um SANEID, só que mesmo setando ele não consigo continuar com a sessão…
Alguem sabe um modo que eu possa manter a sessão após logar no site?
exemplo do meu código:
URL urlSouceCode = new URL(url);
urlConnection = (HttpURLConnection) urlSouceCode.openConnection();
urlConnection.setConnectTimeout(30000);
urlConnection.setReadTimeout(30000);
reader = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), Charset.forName("ISO-8859-1")));
while((line = reader.readLine()) != null) {
sourceCode.append(line + "\n");
}
Consegui fazer uma solução para quem tiver o mesmo problema…
Eu desabilitei o redirecionamento, pois após eu chamar a página ele redirecionava para a index, sendo assim eu já perdi a sessão logo após chamar a página de login.
Após isso, eu peguei todos os cookies do cabeçalho “Set-cookie” e salvei eles em uma variavel String.
Deste modo, nas próximas solicitações eu setava essa variavel String que armazena todos os cookies setados pela página de login.
Segue o exemplo do código:
URL urlSouceCode = new URL(url);
urlConnection = (HttpURLConnection) urlSouceCode.openConnection();
urlConnection.setInstanceFollowRedirects(false);
//cookies
String headerName=null;
for (int i=1; (headerName = urlConnection.getHeaderFieldKey(i))!=null; i++) {
if (headerName.equalsIgnoreCase("Set-Cookie")) {
if(sessionCookie == "") {
sessionCookie = urlConnection.getHeaderField(i);
}
else {
sessionCookie += "; " + urlConnection.getHeaderField(i);
}
}
E para setar os cookies:
URL urlSouceCode = new URL(url);
urlConnection = (HttpURLConnection) urlSouceCode.openConnection();
urlConnection.setRequestProperty("Cookie", cookie);
Espero que ajude alguem caso precise…
abraço