Problem med hentning af HTML sources
HejsaJeg 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....
Herunder er noget rodet kode håber der er nogen der kan se hvorfor det ikke virker...
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.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(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;
URLConnection aConn = null;
InputStream bodyInputStream = null;
InputStreamReader bodyInputStreamReader = null;
try {
menuURL = new URL("http://www.hattrick.org/Common/logo.asp");
aConn = menuURL.openConnection();
} catch(MalformedURLException e) {
System.out.println(e.toString());
} catch(IOException e) {
System.out.println(e.toString());
}
aConn.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 = aConn.getHeaderFieldKey(n);
String headerVal = aConn.getHeaderField(n);
if (headerKey!=null || headerVal!=null) {
System.out.println(headerKey+"="+headerVal);
} else {
done = true;
}
n++;
}
try {
bodyInputStream = aConn.getInputStream();
} catch(IOException e) {
System.out.println(e.toString());
}
}
}
