Avatar billede DalleJava Nybegynder
24. juni 2010 - 08:23 Der er 8 kommentarer og
1 løsning

Login på web via applikation

Hej Eksperter.

Jeg søger hjælp til at skabe adgang til en webside og her tilgå en funktion.
Nærmere fortalt vil jeg bruge min applikation til at tilgå en hjemmeside, og omstille en telefon.

Hvis jeg skal beskrive dette kort:

1.Tilgå en hjemmeside fra min applikation (her med et brugernavn + password)
2.Så vil jeg omstille en telefon (indtaste et brugernavn + password)
3.Lukke connection igen.

Jeg har fundet lidt inspiration i tidligere indlæg:
http://www.eksperten.dk/spm/700015

Men jeg kan ikke få det til at fungere.
Er der en hjælpelig sjæl der vil prøve sig lidt frem, eventuelt med lidt kommenteret kode, eller forklaring, hvis der bliver brugt for mange inforstået udtryk.

Mvh
Daniel
Avatar billede arne_v Ekspert
24. juni 2010 - 15:03 #1
HttpClient er den rigtige loesning.

Koden i det spoergsmaal du linker til er dog bygget mod version 2.0 eller 3.0.

De har lavet nogle inkompatible aendringer i version 4.0, saa koden skal aendres lidt.
Avatar billede DalleJava Nybegynder
29. juni 2010 - 10:24 #2
Hvad hvis jeg bruger de 'gamle' versioner 2/3 ?

Ville jeg så ikke kunne bruge det meste hen af vejen?
Avatar billede arne_v Ekspert
30. juni 2010 - 18:37 #3
Ja.

Men nu har jeg opdateret koden til 4.

:-)

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
25. juli 2010 - 22:51 #4
OK?
Avatar billede DalleJava Nybegynder
26. juli 2010 - 10:38 #5
Hej Arne.

Jeg kan ikke få det til at virke, og arbejder stadig på det.

Har prøvet frem og tilbage mellem versionerne også.

-Daniel
Avatar billede arne_v Ekspert
26. juli 2010 - 15:05 #6
Kan du vaere lidt mere specifik end "kan ikke få det til at virke" ?
Avatar billede DalleJava Nybegynder
29. juli 2010 - 16:43 #7
Hej.

Ja det var en meget sparsom beskrivelse :-) Sorry.

I første omgang har jeg to problemer jeg er i tvivl om.

1. Hvilken pakke/er er det jeg skal hente fra nettet?
Jeg har efterhånden hentet en del.

Jeg har nogle .jar filer nu. Eks. httpclient-4.0 og httpcore-4.0.1_1.

2. Hvordan finder jeg ud af hvad indtastningsfelterne på netsiden hedder? Kan det passe jeg tager view og sourse, og så her ser i filen?
Avatar billede arne_v Ekspert
29. juli 2010 - 16:57 #8
re 1)

Jeg mener at core er nok til dette her.

re 2)

Static: du aabner siden i browseren og kigger paa source.

Dynamic: du henter foerst login siden og har saa noget smart kode der finder feltnavnene og gaetter paa deres betydning.
Avatar billede DalleJava Nybegynder
02. august 2010 - 13:21 #9
Hej Arne.

Der er selvfølgelig point til dig for hjælpen.

Jeg får nu ingen fejl når jeg kører det, men ej heller noget resultet.
Så jeg vil arbejde videre på dette med den hjælp jeg har fået!

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