Avatar billede daniboy Nybegynder
25. februar 2003 - 17:29 Der er 10 kommentarer og
2 løsninger

HTML source hentning

Jeg oprettede spørgsmål http://www.exp.dk/spm/321322
Men kom til at acceptere lidt for hurtig da den kode jeg allerede selv har skrevet kan det og lidt til.
Problemet ligger så i at den retunere HTML med frame i er at jeg når jeg forsøger at hente de kilder som frame linker til, at jeg får en en side tilbage i hovedet som er en frame hvor der står at der er forekommet en session timeout...

Det svare til at man tager f.eks. linket til menuen, lukker sin browser og åbner det direkte link til menuen i en ny browser...

Mit problem ligger her i at jeg ikke ved hvordan jeg skal håndtere de cookies som jeg tror det handler om...
Avatar billede arne_v Ekspert
25. februar 2003 - 20:47 #1
Det er uden tvivl et cookie problem.

Hvis den kode du bruger kan håndtere cookies, så vil jeg tro at du
bare skal:
  - først henet hoved-siden (og smide indhodlet væk)
  - derefter hente det du skal bruge

Fordi så formoder jeg at hoved-siden vil sætte den session cookie der
før at du får lov til at hente det du skal bruge.
Avatar billede arne_v Ekspert
25. februar 2003 - 20:48 #2
Ellers kan du også prøve at poste lidt kode, så vi selv kan eksperimentere.
Avatar billede daniboy Nybegynder
26. februar 2003 - 18:04 #3
alright... her er noget kode...

Det kræver vist lidt forklaring... der er en class i det library jeg bruger som hævder at den acceptere alle cookies og gemmer dem så vidt jeg har forstået det... hvilket er denne linie:

CookieModule.setCookiePolicyHandler(null);

public class Login {
    public String login(HTTPConnection con, String username, String password, /* String url,*/ String filePath) {
    String s = null;
    CookieModule.setCookiePolicyHandler(null);
    try {
        NVPair form_data[] = new NVPair[2];
        form_data[0] = new NVPair("loginname", username);
        form_data[1] = new NVPair("password", password);
        // URI uri = new URI(url);

        //HTTPConnection con = new HTTPConnection(uri);
        HTTPResponse rsp = con.Post(filePath, form_data);
        s = rsp.getText();
    } catch(IOException e) {
        System.err.println(e.toString());
    } catch(ModuleException e) {
        System.err.println(e.toString());
    } catch(ParseException e) {
        System.err.println(e.toString());
    }
Avatar billede daniboy Nybegynder
26. februar 2003 - 18:14 #4
Det skal lige nævnes at jeg har benytter http://www.innovation.ch/java/HTTPClient/ da det så lidt lettere ud... :)
Avatar billede arne_v Ekspert
26. februar 2003 - 18:14 #5
Har du prøvet først at request hoved-siden og derefter den side
du er interesseret i ?
Avatar billede daniboy Nybegynder
26. februar 2003 - 18:19 #6
Men jeg aner jo ikke hvornår de cookies bliver smidt væk.. så ved bare at sætte den til null værdi og accepte alle cookies aner jeg jo ikke om den så smider dem væk et eller andet sted eller hvad den gør med dem
Avatar billede arne_v Ekspert
26. februar 2003 - 19:18 #7
Der er 2 slags cookies:
  - dem der gemmes kun i sessionen
  - dem der gemme spå disk X måneder

Uanset hvilken det er så skal den altså gemme cookien fra
hoved-siden til under-siden.

Det er derfor det er smart at lade det samme program første hente
hoved-siden (og få sat cookien) og derefter unders-iden (og have
fået cookien).
Avatar billede daniboy Nybegynder
26. februar 2003 - 20:12 #8
Her er hele smøren jeg har bixet sammen... efter min mening lyder det meget fornuftigt men ikke ifølge hattrick site...

import HTTPClient.*;
import java.io.*;

public class CodeTest {
    public static void main(String[] args) {
    try {
    URI uri = new URI("http://www.hattrick.org");
    // URI uri2 = new URI("http://www.hattrick.org/Common/menu.asp?timeOut=&loginError=&showMenu=about");
    CookieModule.setCookiePolicyHandler(null);

    HTTPConnection con = new HTTPConnection(uri);

    HTTPResponse rspM = con.Get("http://www.hattrick.org/");
    HTTPResponse rsp = con.Get("/Common/menu.asp?timeOut=&loginError=&showMenu=about");
   
    System.out.println(rspM.getText());
    System.out.println(rsp.getText());
   
} catch(IOException e) {
        System.err.println(e.toString());
    } catch(ModuleException e) {
        System.err.println(e.toString());
    } catch(ParseException e) {
        System.err.println(e.toString());
    }
    }
}
Avatar billede daniboy Nybegynder
26. februar 2003 - 20:21 #9
Her er det HTML som der bliver returneret når jeg prøver at hente en underside... (efter jeg har hentet hoved siden i hvad jeg mener er samme connection)

<HTML>
<META HTTP-EQUIV="Expires" CONTENT="Mon, 06 Jan 1990 00:00:01 GMT">
<head>
<title>TimeOut</title>
</head>
<BODY ONLOAD="window.open ('../Common/default.asp?timeOut=Yes', '_top')">
</BODY>
</HTML>
Avatar billede daniboy Nybegynder
27. februar 2003 - 13:41 #10
Jeg har selv nu kommet frem til at der er problem med min kodes håndtering af cookies... jeg vil gerne vide hvordan de cookies skal håndteres så den modsatte ende så de tror jeg er en rigtig browser...
Avatar billede daniboy Nybegynder
28. februar 2003 - 14:58 #11
....
Avatar billede daniboy Nybegynder
01. marts 2003 - 21:58 #12
Eftersom der ikke kom noget brugbart svar lukker jeg... dog lidt points til dig arne_v for at du gad hjælpe lidt
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester