Java problem POST.a na FORM auth stranicu

poruka: 4
|
čitano: 1.503
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
16 godina
offline
Java problem POST.a + FORM autorizacija

Pokušavam dobiti sadržaj stranice koja je iza forms autorizacijskog dijela;

 

public static String postWebString(String url ,ArrayList<NameValuePair> params,String username, String password) throws Exception
    {
       String result="";
       URI URL=new URI(url);
       HttpClient client = new DefaultHttpClient();
       HttpPost request = new HttpPost(URL);
      
       HttpContext webContext=new BasicHttpContext();
       
       if(username!=null)
       {
         
          UsernamePasswordCredentials creds = new UsernamePasswordCredentials(username, password);
          request.addHeader(new BasicScheme().authenticate(creds, request));
       }
       
       request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));
       
        HttpResponse httpResponse;
        httpResponse = client.execute(request,webContext);
       
         @SuppressWarnings("unused")
       int responseCode = httpResponse.getStatusLine().getStatusCode();
       //String message = httpResponse.getStatusLine().getReasonPhrase();
      
       // Reading stream content - request from vecernji.hr login user
       HttpEntity entity           = httpResponse.getEntity();
       InputStream instream        = entity.getContent();
       result                    = FileStreamHandler.convertStreamToString(instream);
      
       return result;
    }

 

Ali stvar ne prolazi... u biti ne prihvati autorizaciju .. povrat nije stranica koju sam tražio već ona koja se dobije ako se navedenom url.u pokušava pristupiti kao neautorizirani korisnik.

 

Pomoć molim...

Poruka je uređivana zadnji put pet 13.5.2011 16:18 (SasaFrr).
 
0 0 hvala 0
17 godina
offline
Re: Java problem POST.a + FORM autorizacija

Android ili Jave SE ??

 

Koliko vidim na večernjakovoj stranici (ako se tamo pokušavaš logirati) možeš to riješiti običnim POST requestom, ne moraš raditi autorizaciju (jedino ako nisi iza proxy-a). Samo proslijediš ispravne parametre kod POST-a(slika u privitku)

 

request.setEntity(new UrlEncodedFormEntity(params, HTTP.UTF_8));

 

HTTPClient ima svoj cookie manager, iz kojeg pročitaš cookie's, negdje spremiš, ako ti treba pristup iza login-a kasnije (nakon što jednom "ubiješ" httpclient) učitaš te cookie natrag u cookie manager.

 

Trebao bi svaki puta dobiti pristup stranici iza login-a

'Genius might be the ability to say a profound thing in a simple way' Charles Bukowski
Poruka je uređivana zadnji put uto 17.5.2011 14:41 (dado2202).
16 godina
offline
Re: Java problem POST.a + FORM autorizacija

Ej,

 

hvala na javljanju. hehe.. nije večernjak - konkretno radi se o mojoj web stranici (asp.net , klasična autorizacija forms tipa)

Android je program.

 

Ajmo ovako - ako bi s istim klijentom submitao formu za logiranje i onda nakon toga išao raditi submit forme za koju trebaš biti autoriziran po tebi bi to prolazilo?

(ili alternativno ovaj handling s cookieima)

 

Dobro sada sam korisničke parametre izvukao kao polja za submit što je onak..... hm...

 

Budem probao ovako

1. submitat stranicu na koju se inače logiram i onda s istim klijentom

2. submitat stranicu koja se nalazi u korisničkoj zoni.

 

 

Hvala još jednom javim kakvi su bili rezultati.

 

17 godina
offline
Re: Java problem POST.a + FORM autorizacija

Imao sam isti problem kada sam i ja radio login na stranicu isto preko Android-a (stranica je inače bug.hr {#}, za ovaj projekt ).

 

Znači imamo standardnu asp.net formu za login sa nekim njezinim parametrima. Nakon što se napravi login (u mojem slučaju kao da je netko napravio zapamti me login na bug.hr) dobivam .ASPXAUTH cookie i ostale cookie (koje bug koristi, ako koristiš takvu autorizaciju). Njih ne moraš dirati tako dugo dok imaš instancu httpclient-a jer se za njih brine on sam. Ako ćeš raditi svaki puta kada ćeš trebati podatke (iza logina) ponovno login, tada ne moraš se uopće baviti sa cookie-ima, jer ćeš ih za svaku instancu httpclient-a dobiti natrag i httpclient će se baviti s njima.

 

Ako ne želiš svaki puta raditi login (jer bi bilo pametnije da nemaš neku statičku instancu httpclient-a stalno dignutu,ipak je to Android( gdje je zauzeće memorije kralj) nego si je dižeš po potrebi) , onda moraš dohvatiti cookie iz httpclient-a i spremiti ih negdje. Kod svakog ponovnog inicijaliziranja httpclient klase učitaš cookie i dalje radiš sa tim objektom request-ove. To naravno vrijedi samo ako imaš autorizaciju preko cookie-a.

 

Moja logika je išla ovako. Pročitaš stranicu na kojoj je login, pomoću regular expression-a uhvatiš formu na stranici, nakon toga novim regular expression-om poloviš sva polja (input, button itd) koja ulaze kod forme u submit i dodijeliš im potrebne vrijednosti (da je login validan), postaviš te vrijednosti sa nazivima polja kao parametre u POST request i napraviš POST sa linkom koji si prije filtrirao kada si pokupio formu. Trebalo bi raditi. Naravno napraviš da ti se dinamički dodijeljuju polja unutar forme i vrijednosti (u npr. string-array-u ih pomatchaš sa indexima polja). Time si osiguraš da nemaš hardcodirane vrijednosti polja u formi i isto te nazive unutar forme.

 

Napišem ti primjer kako sam ja to sklepao skupa dok dođem doma.

'Genius might be the ability to say a profound thing in a simple way' Charles Bukowski
Poruka je uređivana zadnji put uto 17.5.2011 16:34 (dado2202).
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice