Jsoup android не может войти на сайт - PullRequest
0 голосов
/ 20 марта 2020

Здравствуйте, я пытаюсь войти на свой университетский сайт через Jsoup, я заметил, что это сайт SSO, вот ссылка на страницу входа: https://idp.unito.it/idp/Authn/UserPassword

Проверяя html формы, которую я нашел, что имя пользователя называется: txt_username и пароль: j_password

Я пытаюсь использовать этот код, но я получаю страницу входа и я не удается войти в систему, возможно, произошла ошибка при получении правильных файлов cookie и их установке, но я не знаю, как их решить

public class MainActivity extends AppCompatActivity {

TextView textView;
String username="MYUSERNAME";
String password="MYPASSWORD";
Button btn;
ProgressDialog progressBar;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    btn=findViewById(R.id.btn);
    textView=findViewById(R.id.test);
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            new doInBackground().execute();
        }
    });
}

public class doInBackground extends AsyncTask<Void,Void,Void>{

    String str="";
    ProgressDialog dialog;
    @Override
    protected Void doInBackground(Void... voids){
        try {
            Connection.Response response = 
 Jsoup.connect("https://idp.unito.it/idp/Authn/UserPassword")
                    .data("txt_username",username,"j_password",password)
                    .ignoreContentType(true)
                    .method(Connection.Method.POST)
                    .execute();
            Map<String, String> cookie=response.cookies();
            Document document=Jsoup.connect("https://my.unito.it/")
                    .cookies(cookie)
                    .get();

            str=document.text();
            Log.d("login", "doInBackground"+document.text());
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid){
        super.onPostExecute(aVoid);
        textView.setText(str);
    }

    @Override
    protected void onPreExecute(){
        super.onPreExecute();
        dialog=new ProgressDialog(MainActivity.this);
        dialog.setTitle("Login");
        dialog.setMessage("......()......");
        dialog.show();
    }
}

Спасибо

...