Jak programowo zalogować się na konto?

0

Witam.
Mam plan na apke na androida która po wprowadzeniu loginu i hasła wyśle to jakoś na serwer strony https://adfs.edu.gdansk.pl/adfs/ls/?wa=wsignin1.0&wtrealm=urn%3asharepoint%3agpe&wctx=https%3a%2f%2fwww.edu.gdansk.pl%2f_layouts%2fauthenticate.aspx%3fsource%3dhttps%3a%2f%2fwww.edu.gdansk.pl%2fStrony%2fGPE.aspx&wreply=https%3a%2f%2fwww.edu.gdansk.pl%2f_trust%2fdefault.aspx i bede mógł JSOUP'em wyparsowac sobie dane z HTML'a. Wie ktoś jak coś takiego zrobić ?
Pozdrawiam

0

Tak, wyślij zapytanie HTTP do serwera z odpowiednimi parametrami.

0

Mógłbyś mnie dokładniej nakierować ? jakis tutorial ?

1

Podejrzyj sobie jak wygląda zapytanie HTTP np. Charlesem, albo Fiddlerem.
Później po prostu wysyłasz takie zapytanie.
Jak nie wiesz jak wysłać to polecam( google -> java http request).

0

Mam problem.Strona z ocenami to https://uonet.edu.gdansk.pl/moduluczen/OcenyZbiorczo.aspx ale żeby do niej sie dostać trzeba najpierw sie zalogować z https://adfs.edu.gdansk.pl/adfs/ls/?wa=wsignin1.0&wtrealm=urn%3asharepoint%3agpe&wctx=https%3a%2f%2fwww.edu.gdansk.pl%2f_layouts%2fauthenticate.aspx%3fsource%3dhttps%3a%2f%2fwww.edu.gdansk.pl%2fStrony%2fGPE---Aplikacje.aspx&wreply=https%3a%2f%2fwww.edu.gdansk.pl%2f_trust%2fdefault.aspx
Po zalogowaniu zostajemy przeniesieni do https://www.edu.gdansk.pl/Strony/GPE---Aplikacje.aspx
I teraz gdy chce odczytać oceny które są pod innym adresem dostaje następujący błąd

11-02 17:06:43.700  17713-17779/stasbar.com.planlekcji4h D/GetPageContent﹕ Sending 'GET' request to URL : https://uonet.edu.gdansk.pl/moduluczen/OcenyZbiorczo.aspx
11-02 17:06:43.700  17713-17779/stasbar.com.planlekcji4h D/GetPageContent﹕ Response Code : 404
11-02 17:06:43.705  17713-17779/stasbar.com.planlekcji4h W/System.err﹕ java.io.FileNotFoundException: https://uonet.edu.gdansk.pl/moduluczen/OcenyZbiorczo.aspx
11-02 17:06:43.710  17713-17779/stasbar.com.planlekcji4h W/System.err﹕ at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186)
11-02 17:06:43.710  17713-17779/stasbar.com.planlekcji4h W/System.err﹕ at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:246)
11-02 17:06:43.710  17713-17779/stasbar.com.planlekcji4h W/System.err﹕ at stasbar.com.planlekcji4h.Menu$GradesAsyncTask.GetPageContent(Menu.java:448)
11-02 17:06:43.710  17713-17779/stasbar.com.planlekcji4h W/System.err﹕ at stasbar.com.planlekcji4h.Menu$GradesAsyncTask.doInBackground(Menu.java:354)
11-02 17:06:43.715  17713-17779/stasbar.com.planlekcji4h W/System.err﹕ at stasbar.com.planlekcji4h.Menu$GradesAsyncTask.doInBackground(Menu.java:326)
11-02 17:06:43.715  17713-17779/stasbar.com.planlekcji4h W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
11-02 17:06:43.715  17713-17779/stasbar.com.planlekcji4h W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
11-02 17:06:43.715  17713-17779/stasbar.com.planlekcji4h W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
11-02 17:06:43.715  17713-17779/stasbar.com.planlekcji4h W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
11-02 17:06:43.715  17713-17779/stasbar.com.planlekcji4h W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
11-02 17:06:43.715  17713-17779/stasbar.com.planlekcji4h W/System.err﹕ at java.lang.Thread.run(Thread.java:841) 

Dodam że Cookies też mi wywalają błąd, wpisałem go w komentarz w kodzie przy pętli.
Kod wygląda następująco:

class GradesAsyncTask extends AsyncTask<Void,Void,Void>{
        private List<String> cookies;
        private HttpsURLConnection conn;
        private final String USER_AGENT = "Mozilla/5.0";

        @Override
        protected Void doInBackground(Void... params) {
            String url = "https://adfs.edu.gdansk.pl/adfs/ls/?wa=wsignin1.0&wtrealm=urn%3asharepoint%3agpe&wctx=https%3a%2f%2fwww.edu.gdansk.pl%2f_layouts%2fauthenticate.aspx%3fsource%3dhttps%3a%2f%2fwww.edu.gdansk.pl%2fStrony%2fGPE---Aplikacje.aspx&wreply=https%3a%2f%2fwww.edu.gdansk.pl%2f_trust%2fdefault.aspx";
            String aplikacje = "https://www.edu.gdansk.pl/Strony/GPE---Aplikacje.aspx";
            String grades = "https://uonet.edu.gdansk.pl/moduluczen/OcenyZbiorczo.aspx";

            try {
            // make sure cookies is turn on
            CookieHandler.setDefault(new CookieManager());

            // 1. Send a "GET" request, so that you can extract the form's data.
            String page = GetPageContent(url);

            String postParams = getFormParams(page, "MojLogin", "Moje hasło");

            // 2. Construct above post's content and then send a POST request for
            // authentication
            sendPost(url, postParams);

            // 3. success then go to aplikacje.
            /* to działa
            String result = GetPageContent(aplikacje);
                Log.d("doInBackground RESULT", result);
            */
            // 4. read grades
            // to wywala blad
            result = GetPageContent(grades);
                Log.d("doInBackground RESULT", result);
              

            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }


        private void sendPost(String url, String postParams) throws Exception {
            URL obj = new URL(url);
            conn = (HttpsURLConnection) obj.openConnection();

            // Acts like a browser
            conn.setUseCaches(false);
            conn.setRequestMethod("POST");
            conn.setRequestProperty("Host", "www.edu.gdansk.pl");
            conn.setRequestProperty("User-Agent", USER_AGENT);
            conn.setRequestProperty("Accept",
                    "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
            conn.setRequestProperty("Accept-Language", "pl,en-US;q=0.7,en;q=0.3");
            
/*
            for (String cookie : cookies)
            conn.addRequestProperty("Cookie", cookie.split(";", 1)[0]);
            
11-02 16:57:12.575  15758-16219/stasbar.com.planlekcji4h D/GetPageContent﹕ Sending 'GET' request to URL : https://adfs.edu.gdansk.pl/adfs/ls/?wa=wsignin1.0&wtrealm=urn%3asharepoint%3agpe&wctx=https%3a%2f%2fwww.edu.gdansk.pl%2f_layouts%2fauthenticate.aspx%3fsource%3dhttps%3a%2f%2fwww.edu.gdansk.pl%2fStrony%2fGPE---Aplikacje.aspx&wreply=https%3a%2f%2fwww.edu.gdansk.pl%2f_trust%2fdefault.aspx
11-02 16:57:12.575  15758-16219/stasbar.com.planlekcji4h D/GetPageContent﹕ Response Code : 200
11-02 16:57:12.595  15758-16219/stasbar.com.planlekcji4h D/getFormParams﹕ Extracting form's data...
11-02 16:57:12.790  15758-16219/stasbar.com.planlekcji4h W/System.err﹕ java.lang.NullPointerException
11-02 16:57:12.795  15758-16219/stasbar.com.planlekcji4h W/System.err﹕ at stasbar.com.planlekcji4h.Menu$GradesAsyncTask.sendPost(Menu.java:398)
11-02 16:57:12.795  15758-16219/stasbar.com.planlekcji4h W/System.err﹕ at stasbar.com.planlekcji4h.Menu$GradesAsyncTask.doInBackground(Menu.java:348)
11-02 16:57:12.795  15758-16219/stasbar.com.planlekcji4h W/System.err﹕ at stasbar.com.planlekcji4h.Menu$GradesAsyncTask.doInBackground(Menu.java:326)
11-02 16:57:12.795  15758-16219/stasbar.com.planlekcji4h W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)

*/
            conn.setRequestProperty("Connection", "keep-alive");
            conn.setRequestProperty("Referer", "https://adfs.edu.gdansk.pl/adfs/ls/?wa=wsignin1.0&wtrealm=urn%3asharepoint%3agpe&wctx=https%3a%2f%2fwww.edu.gdansk.pl%2f_layouts%2fauthenticate.aspx%3fsource%3dhttps%3a%2f%2fwww.edu.gdansk.pl%2fStrony%2fGPE---Aplikacje.aspx&wreply=https%3a%2f%2fwww.edu.gdansk.pl%2f_trust%2fdefault.aspx");
            conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
            conn.setRequestProperty("Content-Length", Integer.toString(postParams.length()));

            conn.setDoOutput(true);
            conn.setDoInput(true);

            // Send post request
            DataOutputStream wr = new DataOutputStream(conn.getOutputStream());
            wr.writeBytes(postParams);
            wr.flush();
            wr.close();

            int responseCode = conn.getResponseCode();
            Log.d("sendPost", "\nSending 'POST' request to URL : " + url);
            Log.d("sendPost", "Post parameters : " + postParams);
            Log.d("sendPost", "Response Code : " + responseCode);

            BufferedReader in =
                    new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            Log.d("sendPost",response.toString());

        }

        private String GetPageContent(String url) throws Exception {

            URL obj = new URL(url);
            conn = (HttpsURLConnection) obj.openConnection();

            // default is GET
            conn.setRequestMethod("GET");

            conn.setUseCaches(false);

            // act like a browser
            conn.setRequestProperty("User-Agent", USER_AGENT);
            conn.setRequestProperty("Accept",
                    "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
            conn.setRequestProperty("Accept-Language", "pl-PL,pl;q=0.8,en-US;q=0.6,en;q=0.4");
            if (cookies != null) {
                for (String cookie : cookies) {
                    conn.addRequestProperty("Cookie", cookie.split(";", 1)[0]);
                }
            }
            int responseCode = conn.getResponseCode();
            Log.d("GetPageContent","\nSending 'GET' request to URL : " + url);
            Log.d("GetPageContent", "Response Code : " + responseCode);

            BufferedReader in =
                    new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            // Get the response cookies
            setCookies(conn.getHeaderFields().get("Set-Cookie"));

            return response.toString();

        }

        public String getFormParams(String html, String username, String password)
                throws UnsupportedEncodingException {

            Log.d("getFormParams", "Extracting form's data...");

            Document doc = Jsoup.parse(html);

            // Google form id
            Element loginform = doc.getElementById("tableUserCredentials");
            Elements inputElements = loginform.getElementsByTag("input");
            List<String> paramList = new ArrayList<String>();
            for (Element inputElement : inputElements) {
                String key = inputElement.attr("name");
                String value = inputElement.attr("value");

                if (key.equals("UsernameTextBox")){
                    value = username;
                paramList.add(key + "=" + URLEncoder.encode(value, "UTF-8"));
            }
                else if (key.equals("PasswordTextBox")) {
                    value = password;
                    paramList.add(key + "=" + URLEncoder.encode(value, "UTF-8"));
                }
            }

            // build parameters list
            StringBuilder result = new StringBuilder();
            for (String param : paramList) {
                if (result.length() == 0) {
                    result.append(param);
                } else {
                    result.append("&" + param);
                }
            }
            return result.toString();
        }

        public List<String> getCookies() {
            return cookies;
        }

        public void setCookies(List<String> cookies2) {
            cookies = cookies2;
        }
    }
0

11-02 17:06:43.700 17713-17779/stasbar.com.planlekcji4h D/GetPageContent﹕ Sending 'GET' request to URL : https://uonet.edu.gdansk.pl/moduluczen/OcenyZbiorczo.aspx
11-02 17:06:43.700 17713-17779/stasbar.com.planlekcji4h D/GetPageContent﹕ Response Code : 404

jestes w ogole zalogowany?

0

Trochę źle napisałem ten post.
Chodzi o to że po wysłaniu requesta do zalogowania sie przechodzi on pomyslnie i moge odczytać zawartość z https://www.edu.gdansk.pl/Strony/GPE---Aplikacje.aspx ale z tej strony z ocenami już nie, moje przypuszczenia to to, że sesja wygasa albo to, że się zalogowałem, jest przechowywane w ciasteczkach które u mnie wywalają error, dlatego je wyłączyłem albo do zalogowania sie na tą podstrone https://uonet.edu.gdansk.pl/moduluczen/start.aspx wymagany jest kolejny request.
Oto struktura tej strony bo może sie wydawać troche skomplikowane :D
Loguje sie
user image
Po pomyślnym zalogowaniu, przenosi mnie do tej strony. Klikam w odnośnik "Aplikacja Uczniowska" i zostaje oowarta nowa karta z tą podstroną.
user image
Dalej klikam z menu na Oceny i Jsoupem parsuje siebie tablice z ocenami (to umiem)
user image
Pokarze jak wygląda cały Log.d

11-02 18:31:14.978  25828-25988/stasbar.com.planlekcji4h D/GetPageContent﹕ Sending 'GET' request to URL : https://adfs.edu.gdansk.pl/adfs/ls/?wa=wsignin1.0&wtrealm=urn%3asharepoint%3agpe&wctx=https%3a%2f%2fwww.edu.gdansk.pl%2f_layouts%2fauthenticate.aspx%3fsource%3dhttps%3a%2f%2fwww.edu.gdansk.pl%2fStrony%2fGPE---Aplikacje.aspx&wreply=https%3a%2f%2fwww.edu.gdansk.pl%2f_trust%2fdefault.aspx
11-02 18:31:14.983  25828-25988/stasbar.com.planlekcji4h D/GetPageContent﹕ Response Code : 200
11-02 18:31:14.988  25828-25988/stasbar.com.planlekcji4h D/doInBackground RESULT﹕ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 <--------10lini kodu html czyli działa
11-02 18:31:14.988  25828-25988/stasbar.com.planlekcji4h D/getFormParams﹕ Extracting form's data...
11-02 18:31:15.388  25828-25988/stasbar.com.planlekcji4h D/sendPost﹕ Sending 'POST' request to URL : https://adfs.edu.gdansk.pl/adfs/ls/?wa=wsignin1.0&wtrealm=urn%3asharepoint%3agpe&wctx=https%3a%2f%2fwww.edu.gdansk.pl%2f_layouts%2fauthenticate.aspx%3fsource%3dhttps%3a%2f%2fwww.edu.gdansk.pl%2fStrony%2fGPE---Aplikacje.aspx&wreply=https%3a%2f%2fwww.edu.gdansk.pl%2f_trust%2fdefault.aspx
11-02 18:31:15.388  25828-25988/stasbar.com.planlekcji4h D/sendPost﹕ Post parameters : UsernameTextBox=MojLogin&PasswordTextBox=MojeHaslo
11-02 18:31:15.388  25828-25988/stasbar.com.planlekcji4h D/sendPost﹕ Response Code : 200
11-02 18:31:15.388  25828-25988/stasbar.com.planlekcji4h D/sendPost﹕ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 <--------10lini kodu html czyli działa
11-02 18:31:18.143  25828-25988/stasbar.com.planlekcji4h D/GetPageContent﹕ Sending 'GET' request to URL : https://www.edu.gdansk.pl/Strony/GPE---Aplikacje.aspx
11-02 18:31:18.143  25828-25988/stasbar.com.planlekcji4h D/GetPageContent﹕ Response Code : 200
11-02 18:31:18.193  25828-25988/stasbar.com.planlekcji4h D/doInBackground RESULT﹕ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 <--------10lini kodu html czyli działa
11-02 18:31:19.073  25828-25988/stasbar.com.planlekcji4h D/GetPageContent﹕ Sending 'GET' request to URL : https://uonet.edu.gdansk.pl/moduluczen/OcenyZbiorczo.aspx
11-02 18:31:19.073  25828-25988/stasbar.com.planlekcji4h D/GetPageContent﹕ Response Code : 404
11-02 18:31:19.078  25828-25988/stasbar.com.planlekcji4h W/System.err﹕ java.io.FileNotFoundException: https://uonet.edu.gdansk.pl/moduluczen/OcenyZbiorczo.aspx
11-02 18:31:19.108  25828-25988/stasbar.com.planlekcji4h W/System.err﹕ at com.android.okhttp.internal.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:186)
11-02 18:31:19.108  25828-25988/stasbar.com.planlekcji4h W/System.err﹕ at com.android.okhttp.internal.http.HttpsURLConnectionImpl.getInputStream(HttpsURLConnectionImpl.java:246)
11-02 18:31:19.108  25828-25988/stasbar.com.planlekcji4h W/System.err﹕ at stasbar.com.planlekcji4h.Menu$GradesAsyncTask.GetPageContent(Menu.java:448)
11-02 18:31:19.113  25828-25988/stasbar.com.planlekcji4h W/System.err﹕ at stasbar.com.planlekcji4h.Menu$GradesAsyncTask.doInBackground(Menu.java:354)
11-02 18:31:19.113  25828-25988/stasbar.com.planlekcji4h W/System.err﹕ at stasbar.com.planlekcji4h.Menu$GradesAsyncTask.doInBackground(Menu.java:326)
11-02 18:31:19.113  25828-25988/stasbar.com.planlekcji4h W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:288)
11-02 18:31:19.113  25828-25988/stasbar.com.planlekcji4h W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
11-02 18:31:19.113  25828-25988/stasbar.com.planlekcji4h W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
11-02 18:31:19.113  25828-25988/stasbar.com.planlekcji4h W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
11-02 18:31:19.113  25828-25988/stasbar.com.planlekcji4h W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
11-02 18:31:19.113  25828-25988/stasbar.com.planlekcji4h W/System.err﹕ at java.lang.Thread.run(Thread.java:841)

Zauważyłem coś ważnego.
Te strony są przekierowywane 3 razy
user image
Może ktoś mi pomóc z ustawieniem tych zapytań ? na internecie nie ma tego za dużo.

1 użytkowników online, w tym zalogowanych: 0, gości: 1