Avatar billede hellfishdk Nybegynder
12. september 2010 - 21:05 Der er 19 kommentarer og
3 løsninger

HTML Login

Hej

Jeg har et lille projekt ifm. med min uddannelse, hvor jeg gerne vil kunne logge ind på skolens website for vidensdeling ol. (http://fronter.com/kea).

Det jeg vil er via min applikation:
1) logge ind på sitet
2) hente relevant nyder og links som er rettet specielt til mit hold
3) præsenterer dette i applikationen.

Min første udfordring er i det hele taget at kunne logge ind. Jeg kan af gode grunde ikke give et login til den der kan hjælpe mig, men jeg vil med glæde teste.

Skriv hvis i har brug for mere info. Jeg aner desværre ikke hvilken server der kører sitet.

//hellfishdk
Avatar billede arne_v Ekspert
12. september 2010 - 21:15 #1
De kører tilsyneladende PHP.

Hvis du vil logge ind med en Java app skal du nok have fat på Apache HttpClient biblioteket.

Principielt skal du bare submitte til login URL med username og password værdier og (HttpClient håndterer session cookie for dig).

Men der er godt nok en del JavaScript på den side, så måske vil det kræve lidt arbejde at få de små detaljer på plads.
Avatar billede hellfishdk Nybegynder
12. september 2010 - 23:17 #2
nu kender jeg ikke rigtig noget til javascript. Men umiddelbart så kunne denne function se ud som om den gør noget med login:
function submitenter(myfield,e)
            {
            var keycode;
            if (window.event) keycode = window.event.keyCode;
            else if (e) keycode = e.which;
            else return true;

            if (keycode == 13)
              {
              if (submit_func()) myfield.form.submit();
              return false;
              }
            else
              return true;
            }

Men hvad er keycode?

Jeg ser lige på det med Apache HttpClient, om hvad det er for noget.
Avatar billede arne_v Ekspert
12. september 2010 - 23:32 #3
Så vidt jeg kan læse mig til så laver den stump JS bare en submit når man trykker retur i formen.

Bekvemt for levende brugere - irrelevant for programmer.
Avatar billede welcor Nybegynder
14. september 2010 - 13:21 #4
Fronter er et ret stort multinationalt selskab (jeg ved at det også bruges i Norge).

For at gøre det du er ude efter, kræves der ganske meget kendskab til sitet: Du må forstå:

- login-mekanismen (som sandsyligvis verificerer at du er dig, og at du bruger riktigt password, og så sætter en cookie. Denne cookie må komme med på alle efterfølgende requests mod fronter, så de kan se at du er logget på).
- hvilke parametre som er nødvendige for at hente de data du er ude efter. Her vil det sandsynligvis kræve at du studerer Http-headere.
- Systemet bruger SSL (bliver fronter.com til https://fronter.com når du er logget på). Så er det MEGET vanskeligere at arbejde med.
Avatar billede heinzdmx Nybegynder
14. september 2010 - 13:49 #5
Jeg er lige med på en lytter :)

Kan du uddybe hvordan det bliver mere besværligt når systemet bruger SSL??
Avatar billede welcor Nybegynder
14. september 2010 - 15:48 #6
hmm.. det var pinligt.

Mine erfaringer med https i Java er åbenbart håbløst forældede. I henhold til http://hc.apache.org/httpcomponents-client-ga/examples.html er det vidst ikke så håbløst som jeg gav udtryk for.

Mener jeg selv havde store problemer for et par år siden, men det var fra mobiltelefon - og j2me kan ikke bruge apache httpClient.
Avatar billede welcor Nybegynder
14. september 2010 - 16:29 #7
Jeg har kigget lidt på kommunikationen mellem server og browser på fronter.com.

Som forventet bliver der sat en cookie (faktisk to) når brugeren er logget korrekt på. For at logge på "submitter" man login-formen. Den indeholder, ud over brugernavn og password et par skjulte felter:

Content-Type: application/x-www-form-urlencoded Content-Length: 281 fronter_request_token=18b2524041a602141d60b6c52ac7ebe1&username=brukernavnher&password=passwordher&newlang=no&saveid=-1&mainurl=main.phtml&chp=&USER_SCREEN_SIZE=&USER_INITIAL_WINDOW_WIDTH=1158&USER_INITIAL_WINDOW_HEIGHT=582&SSO_COMMAND=&SSO_COMMAND_SECHASH=4506c1aec525c853422ee32d5526eb08

Jeg har sjekket, og det er ikke nødvendigt at sætte hverken fronter_request_token eller _SECHASH for at logge på.

I response fra loginsiden er der sat to cookies, wcid og session_userkey. Disse må så være sat når man skal hente data ud.
Interessant at httpClient gør det for dig :) Det vidste jeg for eksempel ikke.

Så er det bare at hente direkte fra urler som du finder i gui'et (f. eks. i venstremenuen) og så tolke det du vil ud fra den html du får ned.
Avatar billede arne_v Ekspert
14. september 2010 - 17:55 #8
Det er hvad HttpClient goer.

Principielt kunne man lave det med Http(s)URLConnection, men det er et boevl at haandtere cookies, POST data etc..

Med HttpClient er det relativt nemt.

Det vaerste ved dem er at deres aendringer fra version 3.x til 4.x var aldeles inkompatible.
Avatar billede hellfishdk Nybegynder
14. september 2010 - 22:02 #9
Det er noget bøvlet, at man på apache' site kan finde version 4 af httpclient, men deres tutorial er vist til en version 3. Det betyder at den kode de viser slet ikke kan bruges, da de imports anvendes ikke spiller med de classer og metoder i resten af koden.

welcor> Hvis det passer med at apache httpclient ikke kan anvendes med j2me, er det lidt af et problem i forhold til hvad jeg havde tænkte mig med mit lille projekt. Det skulle ellers være sådan jeg kunne anvende applikationen både på en pc og en phone/android.

Er der andre forslag til hvad jeg kan gøre for at logge ind? Evt med eksempeler med kode?

//hellfishdk
Avatar billede heinzdmx Nybegynder
14. september 2010 - 22:22 #10
Side note:

Android bruger java sproget til syntax, men den kode der bliver compileret med en almindelige java-compiler, fungerer ikke på en Android telefon, fordi Android compileren benytter en compiler der hedder Dalvik i stedet for. (Det er i hvertfald hvad jeg har forstået af det jeg har læst rundt omkring)
Avatar billede hellfishdk Nybegynder
14. september 2010 - 22:23 #11
Jeg stødte på den her tutorial

http://hc.apache.org/httpcomponents-client/tutorial/html/index.html

den må jeg lige se lidt på.
Avatar billede heinzdmx Nybegynder
14. september 2010 - 22:26 #12
Muligvis vil disse eksempler være noget:

http://forums.sun.com/thread.jspa?threadID=5347723


Bemærk første post handler om noget han selv har lavet via standard Library, derefter kommer post med httpClient
Avatar billede heinzdmx Nybegynder
14. september 2010 - 22:28 #13
Og den her kode:
http://www.java-samples.com/java/POST-toHTTPS-url-free-java-sample-program.htm

Ser ud til at kunne gøre det uden httpClient.

Det er dog en noget længere kode der skal til. Men det kan klare HTTPS
Avatar billede arne_v Ekspert
14. september 2010 - 22:35 #14
Android bruger:

Foobar.java --(standard javac)--> Foobar.class --(dx tool)--> Foobar.dex

.dex filen saa udfoeres paa Dalvik VM

Android/Dalvik skulle have naesten hele Java SE men ikke det hele (dog langt mere end Java ME, som var meget begrænset).

Hvis jeg laeser http://developer.android.com/reference/dalvik/system/package-summary.html korrekt, saa kommer Android/Dalvik med Jakarta HttpClient indbygget, saa i Android sammenhaeng lyder det som det helt rigtige valg !!!!
Avatar billede arne_v Ekspert
14. september 2010 - 22:37 #15
HttpClient kan ikke noget som man ikke kan med standard Java klasserne, men man sparer en masse kode til at haandtere cookies, POSt data etc..
Avatar billede arne_v Ekspert
14. september 2010 - 22:38 #16
Avatar billede hellfishdk Nybegynder
19. november 2010 - 15:23 #17
jeg kom ikke videre med projektet, så jeg fik ikke afprøvet jeres forslag.

Kan i ikke smide svar begge to, så jeg kan lukke tråden?
Avatar billede arne_v Ekspert
19. november 2010 - 15:28 #18
ok
Avatar billede heinzdmx Nybegynder
19. november 2010 - 15:58 #19
Ved ikke om det er mig eller welcor du mener?

Men her er i hvertfald et svar, hvis det ikke er mig så må du jo bare lade være at vælge mig ;)
Avatar billede arne_v Ekspert
19. november 2010 - 16:42 #20
maaske et 3 split
Avatar billede hellfishdk Nybegynder
19. november 2010 - 21:35 #21
hvis welcor smider et svar, så laver jeg et 3-split
Avatar billede welcor Nybegynder
20. november 2010 - 00:04 #22
ok
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