Przechwytywanie nagłówka Set-cookie: .ASPXAUTH w JAVA

Przechwytywanie nagłówka Set-cookie: .ASPXAUTH w JAVA
mik0laajek
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:4
0

Próbuję w mojej aplikacji zalogować się na stronę, używając JSOUP. Zauważyłem że wystarczy użyć cookie .ASPXAUTH który jest otrzymywany po wysłaniu request na serwer z danymi logowania (metodą POST). Jednak kiedy odczytuję w programie nagłówki odpowiedzi na taki request brakuje tak nagłówka "Set-cookie: .ASPXAUTH=862C548D0[...]".

Jak mogę odczytać ten nagłówek lub w ogóle dostać to cookie (chyba nie jest to normalne cookie w związku z jakimiś zabezpieczeniami) do późniejszego wykorzystania?

Kod używany do wysyłania request/odebrania response:

Kopiuj
org.jsoup.Connection.Response res = Jsoup.connect("http://adresStrony.pl")
		.data(	"Login_UserName", "MojLogin", 
				"Login_Password", "MojeHaslo")
		.method(Method.POST)
		.execute();
Map<String, String> headers= res.headers();
String header = headers.get("Set-Cookie");

Nagłówki (z webscarab):

Kopiuj
Cache-Control            no-cache
Pragma                     no-cache
Content-Type            text/plain; charset=utf-8
Content-Encoding       gzip
Expires                      -1
Vary                         Accept-Encoding
Server                       Microsoft-IIS/7.5
X-Content-Type-Options   nosniff
Set-Cookie                 .ASPXAUTH=8089E42EBEE[...]
X-Powered-By             ASP.NET
Date                          Sat, 14 Jul 2012 23:39:07 GMT
Content-length           113

Proszę niech ktoś pomoże - szukam już któryś tydzień z rzędu...

edytowany 1x, ostatnio: mik0laajek
Antoniossss
  • Rejestracja:prawie 16 lat
  • Ostatnio:ponad 10 lat
1

Ja takie coś robię zwykłym HttpUrlConnection (ale to ja bo ja lubię wywarzać otwarte drzwi i wszystko robić niskopoziomowo (to jeszcze nie jest nisko - dziwne, że na socketach tego nie zrobilem;P:P))
Generalnie serwer musi wysłać set cookie jeżeli takowe ma być ustawione - inaczej przeglądarka sama sobie ciacha nie wymyśli. Skoro te pole odpowiedzi jest puste, znaczy ze serwer Cie nie lubi i nie rozpoczął sesji. Nie znam jsoup - możesz sprawdzić jaki nagłówki żądania wysyłasz?? - Jest możliwość, że jsoup wysyła jakiś nagłówek który się serwerowi nie podoba, i ten sie na Ciebie wypina, albo np nie wysyła klienta żądania a serwer tego wymaga - sam miałem taką sytuację, że póki nie podałem JVM za firefoxa to server wysyłał śmieci:)


www.toptraker.pl
TopTraker! - I wiesz co jest grane!
Mój własny projekt w Javie - najnowsza wersja już jest!
Koziołek
Moderator
  • Rejestracja:około 18 lat
  • Ostatnio:4 dni
  • Lokalizacja:Stacktrace
  • Postów:6822
1

Znasz nazwę ciasteczka ".ASPXAUTH" to zapewne metoda http://jsoup.org/apidocs/org/jsoup/Connection.Base.html#cookie%28java.lang.String%29 pomoże pobrać jego wartość.


Sięgam tam, gdzie wzrok nie sięga… a tam NullPointerException
mik0laajek
  • Rejestracja:ponad 13 lat
  • Ostatnio:ponad 10 lat
  • Postów:4
0
Antoniossss napisał(a):

Ja takie coś robię zwykłym HttpUrlConnection

możesz napisać coś więcej jak to zrobić czy lecieć wg tutorala oracla?=]

Antoniossss napisał(a):

póki nie podałem JVM za firefoxa to server wysyłał śmieci:)

a to jak ustawić?

z góry thx za pomoc

Antoniossss
  • Rejestracja:prawie 16 lat
  • Ostatnio:ponad 10 lat
0

ja mam takie coś

Kopiuj
      this.adres = new URL(adres);
            this.result = this.adres.openConnection();
            if(UrlReader.timeout==0) UrlReader.timeout=14000;
            this.result.setConnectTimeout(UrlReader.timeout);
            this.result.setReadTimeout(UrlReader.timeout);
          //  this.result.setRequestProperty("User-agent","");
            this.result.setRequestProperty("User-agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:2.0) Gecko/20100101 Firefox/4.0");
            this.result.setRequestProperty("Cookie", initCookie);
            this.result.connect(); 

result jest typu URLConnection, ale jak go rzutujesz na HttpURLConnection to będziesz miał spis response codów, sam będzie chodził za redirectami i takie tam. Więcej info http://docs.oracle.com/javase/1.4.2/docs/api/java/net/HttpURLConnection.html
Co do wysyłania żądań - GET'a chyba tłumaczyć nie trzeba. Z POSTEM troszkę gorzej, o trzeba sobie samemu strumień wygenerować i wstrzyknąć go jako output, ale to też nie jest trudne - aspy itd na postcie działają


www.toptraker.pl
TopTraker! - I wiesz co jest grane!
Mój własny projekt w Javie - najnowsza wersja już jest!
edytowany 1x, ostatnio: Antoniossss

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.