Avatar billede newbieatphp Nybegynder
07. november 2011 - 15:56 Der er 6 kommentarer og
1 løsning

Kildekode efter signon

Hey folkens

Jeg sidder og leger lidt med noget java kode, og har behov for lidt hjælp til at komme videre.

Mit problem er, at jeg pt. ikke er i stand til at hente kildekode med java hvor jeg er værende online på en bestemt spilside.

I første omgang er jeg lidt ligeglad med, om man skal åbne sin browser og logge ind på spilsiden, hvorefter javaprogrammet kan bruge den session, eller om man skal logge på via javaprogrammet.

Forskellen på at være logget ind og ej, er bl.a. følgende i kildekode på spilside:

Ikke logged in
<!-- body_main start -->
<BODY>
    <div id="wrapper">
        <div id="header">
            <div class="container">
                <a href="index.php?p=public_home.php" id="logo"><span>Hockey Arena</span></a>

                <ul id="sddm1"></ul>
                <ul id="sddm"><li><a href='index.php?p=public_home.php'><span class='red'>Sign into the game</span>

Logged in
<!-- body_main start -->
<BODY>
    <div id="wrapper">
        <div id="header">
            <div class="container">
                <a href="index.php?p=public_home.php" id="logo"><span>Hockey Arena</span></a>

                <ul id="sddm1"><li><img src='http://www.hockeyarena.net/images/n/dollar.png' style='vertical-align: middle;' height='25'>  242 136     <img src='http://www.hockeyarena.net/images/n/time.png' style='vertical-align: middle;' height='20'>  


Håber nogle kan hjælpe mig med dette.
Spørg løs hvis jeg ikke har forklaret mig godt nok, eller hvis der ønskes yderligere info herom.
Avatar billede arne_v Ekspert
07. november 2011 - 16:23 #1
Det er ret normalt at faa returneret forskelligt alt efter om man er logget ind eller ej.

Saa du skal sikre dig at de requests der kommer efter login request bliver opfattet som vaerende kommende fra den logged in bruger.

Det goeres ved at sende session cookie med i alle requests.

Det nemmeste er at bruge Apache HttpClient, da den selv haandterer dette.
Avatar billede arne_v Ekspert
07. november 2011 - 16:24 #2
Eksempel:

import java.util.ArrayList;
import java.util.List;

import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

public class Login {
    private HttpClient client;
    public Login() {
        client = new DefaultHttpClient();
    }
    public void login(String url, String userField, String userValue, String passField, String passValue) throws Exception {
        List<NameValuePair> nvp = new ArrayList<NameValuePair>();
        nvp.add(new BasicNameValuePair(userField, userValue));
        nvp.add(new BasicNameValuePair(passField, passValue));
        post(url, nvp);
    }
    public String get(String url) throws Exception {
        HttpGet met = new HttpGet(url);
        return EntityUtils.toString(client.execute(met).getEntity());
    }
    public String post(String url, List<NameValuePair> nvp) throws Exception {
        HttpPost met = new HttpPost(url);
        if (nvp != null) {
            met.setEntity(new UrlEncodedFormEntity(nvp, HTTP.UTF_8));
        }
        return EntityUtils.toString(client.execute(met).getEntity());
    }
    public static void main(String[] args) throws Exception {
        Login lgi = new Login();
        lgi.get("http://localhost:8080/login/open/test.jsp");
        lgi.login("http://localhost:8080/login/j_security_check", "j_username", "userarne", "j_password", "xxxxxx");
        System.out.println(lgi.get("http://localhost:8080/login/open/test.jsp"));
    }
}
Avatar billede arne_v Ekspert
07. november 2011 - 16:25 #3
Nogle steder er login lidt mere tricky.

PHP, ASP og JSP web sites er normalt nemme (medmindre de er meget AJAX orienterede).

ASP.NET kan vaere meget tricky p.g.a. viewstate.
Avatar billede newbieatphp Nybegynder
07. november 2011 - 16:39 #4
Hey Arne,

tak for det hurtige svar.

Jeg prøver at kigge på det og vender tilbage hvis jeg har yderligere problemer herom.

Hvilken udgave af HttpClient vil du anbefale at hente?

Smid gerne et svar, så kan jeg give point når jeg har kigget lidt nærmere på det :)
Avatar billede newbieatphp Nybegynder
07. november 2011 - 16:56 #5
Jeg har tidligere siddet og kigget på det httpClient fra Apache, hvor jeg blot ikke har kunnet får tingene til at hænge sammen.

Du skal have rigtig mange tak for svaret.

Jeg har fået det til at virke efter hensigten, så smid endeligt et svar, så får du nogle velfortjente point :)

God aften.
Avatar billede arne_v Ekspert
07. november 2011 - 17:02 #6
tag nyeste version !!
Avatar billede arne_v Ekspert
07. november 2011 - 17:02 #7
og svar
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

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