/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Problem med hentning af HTML sources
Fra : Daniel Jensen


Dato : 18-03-03 13:33

Hejsa

Jeg har forsøgt at eksperimentere lidt med at hente sider som en browser gør
det... Men det vil ikke rigtigt lykkedes for mig selv om jeg har fået sider
der nøjagtigt beskriver hvordan man sender f.eks. en cookie til bage i den
næste request til serveren....

Når jeg kontakter den side jeg gerne vil hente alt indhold fra inden for
nogle frames får jeg som det første dette header svar i den første request
til www.hattrick.org

Server=Microsoft-IIS/5.0
Date=Tue, 18 Mar 2003 12:29:43 GMT
Location=/Common/default.asp
Content-Length=140
Content-Type=text/html
Set-Cookie=ASPSESSIONIDGQQQQWVC=NNIKNEHCOEDEOAPGMAACDNJL; path=/
Cache-control=private

Jeg forsøger så at hente en anden side inden for den anden frame hvor jeg
sender den ovenstående cookie tilbage i samme request men der får jeg noget
der heder en session timeout som når man har lukket browseren... jeg trækker
cookie informationen ud i en string der heder cookieK og cookieV som jeg
sender med tilbage i min næste request...

Jeg håber virkelig der er nogen derude der kan hjælpe mig med at løse
problemet med hvorfor jeg får session timeout.... hvis der er nogen der vil
have det kan jeg godt droppe noget af den test kode jeg har lavet...

// Daniel Jensen



 
 
Jonathan Stein (18-03-2003)
Kommentar
Fra : Jonathan Stein


Dato : 18-03-03 14:48

Daniel Jensen wrote:

> Server=Microsoft-IIS/5.0
> Date=Tue, 18 Mar 2003 12:29:43 GMT
> Location=/Common/default.asp
> Content-Length=140
> Content-Type=text/html
> Set-Cookie=ASPSESSIONIDGQQQQWVC=NNIKNEHCOEDEOAPGMAACDNJL; path=/
> Cache-control=private

Er ovenstående cut'n'pastet? Jeg får følgende svar:

HTTP/1.1 302 Object moved
Server: Microsoft-IIS/5.0
Date: Tue, 18 Mar 2003 13:40:45 GMT
Location: /Common/default.asp
Content-Length: 140
Content-Type: text/html
Set-Cookie: ASPSESSIONIDGQQQQWVC=NPPNNEHCODPNCHNOPFOKIILG; path=/
Cache-control: private

For at få selve indholdet, skal man således lave et nyt request, med følgende
indhold:

GET /Common/default.asp HTTP/1.1
Host: www.hattrick.org
Cookie: ASPSESSIONIDGQQQQWVC=NPPNNEHCODPNCHNOPFOKIILG;

- så får jeg et gigantisk frame-set, og så kan man begynde at requeste de
enkelte frames. Husk, at adressen er relativ i forhold til den aktulle side, så
SRC="blank.html" skal requestes som GET /Common/blank.html HTTP/1.1 o.s.v.

M.v.h.

Jonathan

--
Nyt alternativ til egen server: JSP Enterprise hotel med adgang til
Enterprise Java Beans, egen Java Virtual Machine og egen IP-adresse
(giver mulighed for eget SSL-certifikat).
http://www.jsp-hotel.dk/



Daniel Jensen (18-03-2003)
Kommentar
Fra : Daniel Jensen


Dato : 18-03-03 21:37

Ja Det cut'n'pastet med det svar når jeg bruger følgende kode... jeg ved
ikke om jeg bruger den korrekte kode eller om jeg bruger classenen
rigtigt... Jeg er specielt i tvivl om jeg gør det rigtige der hvor jeg
exstractor cookien og sender den tilbage igen... Jeg har arbejdet med det
her i lang tid og er hele tiden kørt fast ved cookies når jeg har angrebet
problemet fra flere forskellige vinkler...

import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.net.MalformedURLException;

import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.IOException;

public class CodeTest {

public static void main(String[] args) {

URL myURL;
HttpURLConnection conn = null;

try {
myURL = new URL("http://www.hattrick.org");
conn = (HttpURLConnection) myURL.openConnection();
} catch(MalformedURLException e) {
System.err.println(e.toString());
} catch(IOException e) {
System.err.println(e.toString());
}

int n=1; // n=0 has no key, and the HTTP return status in the value field
boolean done = false;
while (!done){
String headerKey = conn.getHeaderFieldKey(n);
String headerVal = conn.getHeaderField(n);
if (headerKey!=null || headerVal!=null) {
System.out.println(headerKey+"="+headerVal);
} else {
done = true;
}
n++;
}

// Henter Hele Strengen representeret af "Set-Cookie"
String cookie = conn.getHeaderField("Set-Cookie");
System.out.println("");
System.out.println("De næste par linie viser processen i cookie
udskillelsen...");
System.out.println(cookie);

// Trækker den brugbare del af cookien før ; ud
int index = cookie.indexOf(";");
if(index >= 0) cookie = cookie.substring(0, index);
System.out.println(cookie);

// Her Skiller Vi key fra Value i Coookien
String cookieK = null;
String cookieV = null;
index = cookie.indexOf("=");
if(index >= 0) cookieK = cookie.substring(0, index);
index++;
cookieV = cookie.substring(index);

System.out.println(cookieK);
System.out.println(cookieV);

// Nu skal vi sende cookien tilbage i en ny request til serveren
URL menuURL = null;
InputStream bodyInputStream = null;
InputStreamReader bodyInputStreamReader = null;
BufferedReader bodyBufferedReader = null;
String body = null;

try {
menuURL = new URL("http://www.hattrick.org/Common/logo.asp");
// aConn = menuURL.openConnection();
conn = (HttpURLConnection) menuURL.openConnection();

} catch(MalformedURLException e) {
System.out.println(e.toString());
} catch(IOException e) {
System.out.println(e.toString());
}
conn.setRequestProperty(cookieK, cookieV);

n=1; // n=0 has no key, and the HTTP return status in the value field
done = false;
while (!done){
String headerKey = conn.getHeaderFieldKey(n);
String headerVal = conn.getHeaderField(n);
if (headerKey!=null || headerVal!=null) {
System.out.println(headerKey+"="+headerVal);
} else {
done = true;
}
n++;
}

try {
bodyInputStream = conn.getInputStream();
bodyInputStreamReader = new InputStreamReader(bodyInputStream);
bodyBufferedReader = new BufferedReader(bodyInputStreamReader);
while((body = bodyBufferedReader.readLine())!=null) {
System.out.println(body);
}
} catch(IOException e) {
System.out.println(e.toString());
}

}
}




"Jonathan Stein" <jstein@image.dk> skrev i en meddelelse
news:3E77238A.1150EADD@image.dk...
> Daniel Jensen wrote:
>
> > Server=Microsoft-IIS/5.0
> > Date=Tue, 18 Mar 2003 12:29:43 GMT
> > Location=/Common/default.asp
> > Content-Length=140
> > Content-Type=text/html
> > Set-Cookie=ASPSESSIONIDGQQQQWVC=NNIKNEHCOEDEOAPGMAACDNJL; path=/
> > Cache-control=private
>
> Er ovenstående cut'n'pastet? Jeg får følgende svar:
>
> HTTP/1.1 302 Object moved
> Server: Microsoft-IIS/5.0
> Date: Tue, 18 Mar 2003 13:40:45 GMT
> Location: /Common/default.asp
> Content-Length: 140
> Content-Type: text/html
> Set-Cookie: ASPSESSIONIDGQQQQWVC=NPPNNEHCODPNCHNOPFOKIILG; path=/
> Cache-control: private
>
> For at få selve indholdet, skal man således lave et nyt request, med
følgende
> indhold:
>
> GET /Common/default.asp HTTP/1.1
> Host: www.hattrick.org
> Cookie: ASPSESSIONIDGQQQQWVC=NPPNNEHCODPNCHNOPFOKIILG;
>
> - så får jeg et gigantisk frame-set, og så kan man begynde at requeste de
> enkelte frames. Husk, at adressen er relativ i forhold til den aktulle
side, så
> SRC="blank.html" skal requestes som GET /Common/blank.html HTTP/1.1 o.s.v.
>
> M.v.h.
>
> Jonathan
>
> --
> Nyt alternativ til egen server: JSP Enterprise hotel med adgang til
> Enterprise Java Beans, egen Java Virtual Machine og egen IP-adresse
> (giver mulighed for eget SSL-certifikat).
> http://www.jsp-hotel.dk/
>
>



Jonathan Stein (18-03-2003)
Kommentar
Fra : Jonathan Stein


Dato : 18-03-03 23:19

Daniel Jensen wrote:

> conn.setRequestProperty(cookieK, cookieV);

Jeg vil tro, at ovenstående skal være noget i retning af:

conn.setRequestProperty("Cookie", cookieK + "=" + cookieV);

- desuden er jeg lidt i tvivl om du gør tingene i den rigtige rækkefølge. Du
kan evt. teste med http://ip.ter.dk/ som sender alle dine headers retur i klar
tekst (prøv først at indtaste adressen i en browser - så kan du se princippet).

M.v.h.

Jonathan



Daniel Jensen (19-03-2003)
Kommentar
Fra : Daniel Jensen


Dato : 19-03-03 13:50

"Jonathan Stein" <jstein@image.dk> skrev i en meddelelse
news:3E779B55.FC1940CE@image.dk...
> Daniel Jensen wrote:
>
> > conn.setRequestProperty(cookieK, cookieV);
>
> Jeg vil tro, at ovenstående skal være noget i retning af:
>
> conn.setRequestProperty("Cookie", cookieK + "=" + cookieV);
>
> - desuden er jeg lidt i tvivl om du gør tingene i den rigtige
rækkefølge. Du
> kan evt. teste med http://ip.ter.dk/ som sender alle dine headers retur i
klar
> tekst (prøv først at indtaste adressen i en browser - så kan du se
princippet).
>
> M.v.h.
>
> Jonathan
>
>

Ok jeg har nu lavet en lang række rettelser i min kode efter og ændret den
måde jeg Generere min returnering af Cookies... Har så testet hvad jeg
sender til serveren efter mine ændringer... og det ser ud som følgende...

GET / HTTP/1.1<br>
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2<br>
Connection: keep-alive<br>
Cookie: Kagenavn=Kageindhold<br>
Host: ip.ter.dk<br>
User-Agent: Java/1.4.1_01<br>

Tror du det er et problem at der står "User-Agent: Java/1.4.1_01"?? Og
syntes du det ser fornuftigt ud de data jeg her sender til serveren?...
Ville værre rart hvis der fantes et værktøj til at se hvad f.eks. explore
browseren sender til www.hattrick.org under hentningen af siden Kender du
evt. nogen?

// Daniel Jensen



Daniel Jensen (19-03-2003)
Kommentar
Fra : Daniel Jensen


Dato : 19-03-03 13:58

Ok Jeg har Ændret en del i min kode og nu kan jeg endelig hente hele siden
via min java kode... :)

Du skal have mange tak for hjælpen... owe you big time :)

// Daniel Jensen



Daniel Jensen (18-03-2003)
Kommentar
Fra : Daniel Jensen


Dato : 18-03-03 22:03

"Jonathan Stein" <jstein@image.dk> skrev i en meddelelse
news:3E77238A.1150EADD@image.dk...
> Daniel Jensen wrote:
>
> > Server=Microsoft-IIS/5.0
> > Date=Tue, 18 Mar 2003 12:29:43 GMT
> > Location=/Common/default.asp
> > Content-Length=140
> > Content-Type=text/html
> > Set-Cookie=ASPSESSIONIDGQQQQWVC=NNIKNEHCOEDEOAPGMAACDNJL; path=/
> > Cache-control=private
>
> Er ovenstående cut'n'pastet? Jeg får følgende svar:
>
> HTTP/1.1 302 Object moved
> Server: Microsoft-IIS/5.0
> Date: Tue, 18 Mar 2003 13:40:45 GMT
> Location: /Common/default.asp
> Content-Length: 140
> Content-Type: text/html
> Set-Cookie: ASPSESSIONIDGQQQQWVC=NPPNNEHCODPNCHNOPFOKIILG; path=/
> Cache-control: private
>
> For at få selve indholdet, skal man således lave et nyt request, med
følgende
> indhold:
>
> GET /Common/default.asp HTTP/1.1
> Host: www.hattrick.org
> Cookie: ASPSESSIONIDGQQQQWVC=NPPNNEHCODPNCHNOPFOKIILG;
>
> - så får jeg et gigantisk frame-set, og så kan man begynde at requeste de
> enkelte frames. Husk, at adressen er relativ i forhold til den aktulle
side, så
> SRC="blank.html" skal requestes som GET /Common/blank.html HTTP/1.1 o.s.v.
>
> M.v.h.
>
> Jonathan
>
> --
> Nyt alternativ til egen server: JSP Enterprise hotel med adgang til
> Enterprise Java Beans, egen Java Virtual Machine og egen IP-adresse
> (giver mulighed for eget SSL-certifikat).
> http://www.jsp-hotel.dk/
>
>

Jeg har forsøgt at sætte de request properties du beskriver herover men
stadigvæk får jeg session timeout...

Server=Microsoft-IIS/5.0
Date=Tue, 18 Mar 2003 20:59:40 GMT
Location=../Common/TimeOut.asp
Content-Length=142
Content-Type=text/html
Set-Cookie=ASPSESSIONIDGQQQQWVC=HHNMOEHCHNCJLEMBICBIJNOA; path=/
Cache-control=private
java.net.MalformedURLException: no protocol: ../Common/TimeOut.asp

Ovenstående er de headers jeg får når jeg laver request med de headers du
beskriver hvilket er den side jeg har fået hele tiden og det hjælper ikke
rigtigt noget da det er session timeout siden.... :/



Søg
Reklame
Statistik
Spørgsmål : 177460
Tips : 31964
Nyheder : 719565
Indlæg : 6408200
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste