Форум программистов, компьютерный форум CyberForum.ru

POST авторизация с использованием JSOUP - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Заполнение ListView в AsyncTask http://www.cyberforum.ru/android-dev/thread1411813.html
Нужно заполнить ListView картинками, которые скачиваются в AsyncTask с помощью Picasso. Картинки скачиваются нормально, ArrayList и ArrayAdapter заполняются, но при adapter.notifyDataSetChanged(); в onProgressUpdate(); вылезает Exception - ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. В чём проблема и как лучше решить...
Программирование Android Преобразование EditText в Double Здравствуйте, понемногу изучаю андроид и вот уперся в проблему, точнее в не знание. Есть EditText в нем указал что можно вводить только десятичные числа. А вот теперь сама проблема как правильно все перевести, запись такого плана не прокатывает editText = editText + 2; ну это и логично. Следовательно надо как то editText перевести в double. Подскажите как это сделать? Да и учитывая что только... http://www.cyberforum.ru/android-dev/thread1411782.html
Android Studio. Установка приложения на эмулятор. Application Installation Failed Программирование Android
С недавних пор перестали устанавливаться на эмулятор абсолютно все мои приложения. Даже только что созданный пустой проект не устанавливается. Все время вываливается ошибка на скрине. Как исправить подскажите пожалуйста?
Как сохранять добавленное в ListView поле? Программирование Android
День добрый. Подскажите как можно сохранять добавленное поле , что бы в следующий раз при запуске приложения оно было и добавлять к имеющимся уже public class MainActivity extends Activity { ArrayList<String> massname; EditText edittext ; ListView List ; ArrayAdapter<String> adapter ; @Override
Программирование Android Обработка нажатия на RadioButton http://www.cyberforum.ru/android-dev/thread1411653.html
Постигаю андроид. Не могу разобраться со свичем. EditText принимает число, сохранил его, дальше выбираю RadioBatton и нифига не происходит) public void onClick(View view) { switch (view.getId()) { case R.id.radioMetr:
Программирование Android Изменять изображение в зависимости от количества нажатий Всем привет , помогите нубу) Как сделать чтобы , кликая на кнопку, допустим 100 раз появилось изображение ,200 раз другое public class MainActivity extends ActionBarActivity { public int mCount = 0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button... подробнее

Показать сообщение отдельно
fgtmenow
75 / 75 / 7
Регистрация: 29.03.2012
Сообщений: 254
05.04.2015, 03:46  [ТС]     POST авторизация с использованием JSOUP
Спасибо всем тем, кто откликнулся помочь.. никому собственно.

Работающее решение следующее:
Кликните здесь для просмотра всего текста

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package com.noxx.joyreactor.Net;
 
 
import android.app.Activity;
import android.os.AsyncTask;
import android.util.Log;
 
import com.noxx.joyreactor.Global;
 
import org.jsoup.Connection;
import org.jsoup.helper.HttpConnection;
import org.jsoup.nodes.Document;
 
import java.io.IOException;
import java.util.Map;
 
public class Auth {
    Activity activity;
    Global global;
    int DEFAULT_TIMEOUT = 7000;
 
    public Auth(Activity activity) {
        this.activity = activity;
        this.global = (Global) activity.getApplication();
    }
 
    public void doAuth() {
        new AuthTask().execute();
    }
 
    void makeAuth() {
        Document doc = null;
        try {
            String loginURL = global.getJoy_url() + "/login";
            String itemURL = global.getJoy_url();
            String useragent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.101 Safari/537.36";
            String login = "username";
            String pass = "password";
 
            //получаем страницу входа
            Connection connection1 = HttpConnection.connect(loginURL)
                    .ignoreHttpErrors(true)
                    .userAgent(useragent);
            Connection.Response response1 = connection1
                    .execute();
            //цапаем оттуда токен
            String token = response1.parse().getElementById("signin__csrf_token").attr("value");      
            Log.d("token", token);
 
            for (Map.Entry<String, String> cookie : response1.cookies().entrySet()) {
                Log.d("cookie1", cookie.getKey() + " : " + cookie.getValue());
            }
            for (Map.Entry<String, String> head : response1.headers().entrySet()) {
                Log.d("headers1", head.getKey() + " : " + head.getValue());
            }
            Log.d("headers1", " .... ");
            //делаем пост запрос
            Connection connection2 = connection1.url(loginURL)
                   // .timeout(7000)
                    .cookies(response1.cookies())                 
                    .ignoreHttpErrors(true)
                    .data("signin[username]", login)
                    .data("signin[password]", pass)
                    .data("signin[remember]", "on")
                    .data("signin[_csrf_token]", token)
                    .method(Connection.Method.POST)
                    .followRedirects(true);
 
            Connection.Response response2 = connection2.execute();
            for (Map.Entry<String, String> cookie : response2.cookies().entrySet()) {
                Log.d("cookie2", cookie.getKey() + " : " + cookie.getValue());
            }
            for (Map.Entry<String, String> head : response2.headers().entrySet()) {
                Log.d("headers2", head.getKey() + " : " + head.getValue());
            }
            Log.d("headers2", " .... ");
 
            Document tt2 = response2.parse();
            String t2 = tt2.select(".login").html();
            Log.d("login tag2", t2);
            String error2 = tt2.select(".error_list").text();
            Log.d("error tag2", error2);           
            // получаем страницу (уже должны быть авторизованы)  
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
 
    class AuthTask extends AsyncTask<Void, Void, Void> {
 
        @Override
        protected Void doInBackground(Void... params) {
            makeAuth();
            return null;
        }
    }
}


В чем была суть моей ошибки:
  • Во-первых на странице присутствовало 2 csrf token, один это сгенерированный для текущей страницы, второй для непосредсвенной авторизации необходим. И я пихал не то и не туда.
  • Во-вторых надо использовать 1 объект connection для всех манипуляций
  • В-третьих куки, их необходимо пихать в каждый коннект из предыдущего response


P.s. тему можно закрывать, задача решена
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru