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

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:

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):

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...

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:)

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ść.

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

0

ja mam takie coś

      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ą

1 użytkowników online, w tym zalogowanych: 0, gości: 1