Autor Wątek: POST nie loguje  (Przeczytany 3006 razy)

Offline adsko

  • Użytkownik

# Grudzień 15, 2012, 21:10:32
            try {
                    // Create a new HttpClient and Post Header
                    HttpClient httpclient = new DefaultHttpClient(); 
                    HttpPost httppost = new HttpPost("https://dziennik.librus.pl/uczen_index"); 
                    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();   
                      nameValuePairs.add(new BasicNameValuePair("login", "xxx"));
                      nameValuePairs.add(new BasicNameValuePair("passwd", "xxx"));
                      nameValuePairs.add(new BasicNameValuePair("ed_pass_keydown",""));
                      nameValuePairs.add(new BasicNameValuePair("ed_pass_keyup",""));
                      nameValuePairs.add(new BasicNameValuePair("captcha",""));
                      nameValuePairs.add(new BasicNameValuePair("jest_captcha","1"));
                      nameValuePairs.add(new BasicNameValuePair("czy_js","1"));
                      nameValuePairs.add(new BasicNameValuePair("token","aa1"));
                      httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
                      // Execute HTTP Post Request 
                      HttpResponse response = httpclient.execute(httppost);     
   
                      String text = EntityUtils.toString(response.getEntity());   
                          Log.i(DEBUG_TAG, "response = "+text);
                  } catch (ClientProtocolException e) { 
                      // TODO Auto-generated catch block
                    e.printStackTrace();
                  } catch (IOException e) { 
                      // TODO Auto-generated catch block 
                    e.printStackTrace();
                  }

Posiadam taki kod na w/w strone aby sie zalogować, lecz ciągle mnie nie loguje;/ Mam napisane to w C# lecz tam wygląda to inaczej:
            request = (HttpWebRequest)HttpWebRequest.Create("https://dziennik.librus.pl/loguj");
            request.Method = "POST";
            request.Referer = "http://dziennik.librus.pl/";
            request.CookieContainer = cookies;
            loginData = String.Format("&xjxr=1322760116817&xjxargs[]=S" + login);
            request.ContentType = "application/x-www-form-urlencoded";
            loginDataBytes = Encoding.ASCII.GetBytes(loginData);
            postData = request.GetRequestStream();
            postData.Write(loginDataBytes, 0, loginDataBytes.Length);
            postData.Close();
            webResp = (HttpWebResponse)request.GetResponse();
            response.Close();
            request = (HttpWebRequest)HttpWebRequest.Create("https://dziennik.librus.pl/loguj");
            request.Method = "POST";
            request.Referer = "http://dziennik.librus.pl/";
            request.CookieContainer = cookies;
            loginData = String.Format("login=" + login + "&passwd=" + haslo + "&ed_pass_keydown=&ed_pass_keyup=&captcha=&jest_captcha=1&czy_js=1&token=aa1");
            request.ContentType = "application/x-www-form-urlencoded";
            loginDataBytes = Encoding.ASCII.GetBytes(loginData);
            postData = request.GetRequestStream();
            postData.Write(loginDataBytes, 0, loginDataBytes.Length);
            postData.Close();
            response = (HttpWebResponse)request.GetResponse();
            resStream = response.GetResponseStream();

            reader = new StreamReader(resStream);
            input = reader.ReadToEnd();
            response.Close();
            reader.Close();
Może ktoś pomóc aby mnie zalogowało i pozostawiło zalogowanym?

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Xion

  • Moderator
    • xion.log

# Grudzień 15, 2012, 22:59:03
Przecież w obu przypadkach postujesz do innych URLi. A przykład w C# ma połowę kodu zdublowanego.
Czytasz w ogóle to, co piszesz?

Offline adsko

  • Użytkownik

# Grudzień 15, 2012, 23:12:45
tak, tam powinno byc HttpPost httppost = new HttpPost("https://dziennik.librus.pl/loguj");  Wiem że w C# jest podublowane lecz tak jakoś mi wyszło. To logowanie jest na tyle dziwne że musze pierw wysłać
"&xjxr=1322760116817&xjxargs[]=S" + login a dopiero potem reszte, i ztym miałem problem dlatego dublowałem.

Offline adsko

  • Użytkownik

# Grudzień 17, 2012, 02:08:33
Ok, udało mi się to napisać w javie:
    URL url2 = new URL(url);
    URLConnection conn2 = url2.openConnection();
    String cookieHeader = conn2.getHeaderFields().get("Set-Cookie").get(0);
   
URL siteUrl = new URL(url);
HttpURLConnection conn = (HttpURLConnection) siteUrl.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("REFERER", "https://dziennik.librus.pl/loguj");

conn.setRequestProperty("Cookie", cookieHeader);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setDoOutput(true);
conn.setDoInput(true);
DataOutputStream out = new DataOutputStream(conn.getOutputStream());

String content = "";
content = "login=xxx&passwd=xxx&ed_pass_keydown=&ed_pass_keyup=&captcha=&jest_captcha=1&czy_js=1&token=aa1";
System.out.println(content);
out.write(content.getBytes("ASCII"));
out.flush();
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = "";
while((line=in.readLine())!=null) {
System.out.println(line);
}






in.close();
I teraz mam następne pytanie, dlaczego ten kod nie działa na androidzie??

Offline MaxGarden

  • Użytkownik
    • Profil na warsztacie

# Grudzień 17, 2012, 08:25:15
Ustawiłeś w manifes-cie uprawnienia do korzystania z Internetu?

Offline adsko

  • Użytkownik

# Grudzień 17, 2012, 12:51:11
Wlasnie mam, mozliwe ze to problem z cookies? Tylko ze w javie to dziala...

Offline adsko

  • Użytkownik

# Grudzień 17, 2012, 20:38:18
Może ktoś poprawić ten kod aby wczytywał dobrze cookies?? Wydaje mi się że to od tego on nie może się zalogować:/ Sprawdzałem jak wygląda cookie w javie a jak na androidzie i się od siebie różnią.
    URL url2 = new URL(url);
    URLConnection conn2 = url2.openConnection();
    String cookieHeader = conn2.getHeaderFields().get("Set-Cookie").get(0);
   
URL siteUrl = new URL(url);
String cookies = "session_cookie=value";
HttpURLConnection conn = (HttpURLConnection) siteUrl.openConnection();
conn.setRequestMethod("POST");
conn.setRequestProperty("REFERER", "https://dziennik.librus.pl/loguj");

conn.setRequestProperty("Cookie", cookieHeader);
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setDoOutput(true);
conn.setDoInput(true);
DataOutputStream out = new DataOutputStream(conn.getOutputStream());

String content = "";
content = "login=xxx&passwd=xxx&ed_pass_keydown=&ed_pass_keyup=&captcha=&jest_captcha=1&czy_js=1&token=aa1";
System.out.println(content);
out.write(content.getBytes("ASCII"));
out.flush();
out.close();
BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line = "";
while((line=in.readLine())!=null) {
System.out.println(line);
}

in.close();