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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
shulyakyarik
10 / 10 / 3
Регистрация: 28.03.2014
Сообщений: 156
#1

Передача HttpClient как параметр - Программирование Android

16.09.2014, 20:31. Просмотров 305. Ответов 0
Метки нет (Все метки)

Есть страница которая отдает Json только если пользователь авторизирован. Для авторизации я отправляю логин и пароль на другую страницу, а потом загружаю данные. Для отправки запроса и скачивания использую AsyncTask. Для авторизации создал отдельный класс, но если использовать его, то вход не происходит. Вот код который работает(без отдельного класса)
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
new AsyncTask<Void, Void, Void>() {
 
            HttpClient httpClient;
            ArrayList<JSONObject> arrayList;
            String parsed,email,pass;
 
            @Override
            protected Void doInBackground(Void... params) {
 
                try {
                    httpClient = new DefaultHttpClient();
                    auth();
                    HttpResponse response;
                    HttpPost myConnection = new HttpPost("http://438351.shckiev.web.hosting-test.net/1/project-manager/1/todolist/getJson");
                    response = httpClient.execute(myConnection);
                    parsed = EntityUtils.toString(response.getEntity(), "UTF-8");
                    toDatabase(parsed);
 
                } catch (Exception e) {
                    Log.e("", "Log catch");
                    parsed = fromDatabase();
                }
 
                return null;
            }
 
            @Override
            protected void onPostExecute(Void aVoid) {
                super.onPostExecute(aVoid);
                ...
            }
 
            public Boolean auth() {
                Log.e("", "Auth");
                database();
                return Post();
            }
 
            public void database(){
                DB db = new DB(getActivity());
                SQLiteDatabase sqLiteDatabase = db.getReadableDatabase();
                Cursor c = sqLiteDatabase.query("account", null, null, null, null, null, null);
                c.moveToFirst();
                email = c.getString(c.getColumnIndex("email"));
                pass = c.getString(c.getColumnIndex("password"));
                sqLiteDatabase.close();
                db.close();
            }
 
            public Boolean Post(){
                boolean result;
                HttpPost httppost = new HttpPost("http://438351.shckiev.web.hosting-test.net/users/login/process");
                HttpResponse httpResponse;
 
                try {
                    List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
                    nameValuePairs.add(new BasicNameValuePair("email", email));
                    nameValuePairs.add(new BasicNameValuePair("password",pass));
                    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));
                    httpResponse = httpClient.execute(httppost);
                    String s;
                    s = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
                    Log.e("", s);
                    if(s.equals("1")){
                        result = true;
                    }
                    else result = false;
                } catch (Exception e) {
                    result = false;
                }
                return result;
            }
 
            public String fromDatabase(){
                String s = null;
                DB db = new DB(getActivity());
                SQLiteDatabase sqLiteDatabase = db.getReadableDatabase();
                Cursor c = sqLiteDatabase.query("user_data", null, null, null, null, null, null);
                c.moveToFirst();
                s = c.getString(c.getColumnIndex("todos"));
                sqLiteDatabase.close();
                db.close();
                return s;
            }
 
            public void toDatabase(String s){
                DB db = new DB(getActivity());
                SQLiteDatabase sqLiteDatabase = db.getWritableDatabase();
                ContentValues cv = new ContentValues();
                cv.put("todos",s);
                sqLiteDatabase.update("user_data",cv,"_id=1",null);
                sqLiteDatabase.close();
                db.close();
            }
}
Вот неработающий код

AsyncTask

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
protected Void doInBackground(Void... params) {
 
                try {
                    httpClient = new DefaultHttpClient();
                    new AnotherAuth(getApplecation, httpClient).auth();
                    HttpResponse response;
                    HttpPost myConnection = new HttpPost("http://438351.shckiev.web.hosting-test.net/1/project-manager/1/todolist/getJson");
                    response = httpClient.execute(myConnection);
                    parsed = EntityUtils.toString(response.getEntity(), "UTF-8");
                    toDatabase(parsed);
 
                } catch (Exception e) {
                    Log.e("", "Log catch");
                    parsed = fromDatabase();
                }
 
                return null;
            }
AnotherAuth

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
public class AnotherAuth {
 
    private HttpClient httpClient;
    private String email, pass;
    private Context context;
 
    public AnotherAuth(Context context, HttpClient httpClient){
        this.context = context;
        this.httpClient = httpClient;
    }
 
    public Boolean auth() {
        Log.e("", "Auth");
        fromDatabase();
        return Post();
    }
 
    public Boolean Post(){
        boolean result;
        HttpPost httppost = new HttpPost("http://438351.shckiev.web.hosting-test.net/users/login/process");
        HttpResponse httpResponse;
 
        try {
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
            nameValuePairs.add(new BasicNameValuePair("email", email));
            nameValuePairs.add(new BasicNameValuePair("password",pass));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs,"UTF-8"));
            httpResponse = httpClient.execute(httppost);
            String s;
            s = EntityUtils.toString(httpResponse.getEntity(), "UTF-8");
            if(s.equals("1")){
                result = true;
            }
            else result = false;
        } catch (Exception e) {
            result = false;
        }
        return result;
    }
 
    public void fromDatabase(){
        DB db = new DB(context);
        SQLiteDatabase sqLiteDatabase = db.getReadableDatabase();
        Cursor c = sqLiteDatabase.query("account", null, null, null, null, null, null);
        c.moveToFirst();
        email = c.getString(c.getColumnIndex("email"));
        pass = c.getString(c.getColumnIndex("password"));
        sqLiteDatabase.close();
        db.close();
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2014, 20:31     Передача HttpClient как параметр
Посмотрите здесь:

Не работает HttpClient - Программирование Android
Первый раз пробую отправить и получить данные на сервер... Полазил в нете и накопал такую функцию... но когда в эмуляторе запускаю и...

HttpClient.execute - Программирование Android
Привет всем, при работе этого кода почему то программа вылетает с ошибкой. public String getXmlFromUrl(String url) { String...

HttpClient вылетает на телефоне - Программирование Android
Доброго времени суток! Пытаюсь сделать http запрос с телефона (Sony Xperia V, Andoid 4.1.2) Метод для отправки: public...

Какая есть альтернатива устаревшему apache HttpClient? - Программирование Android
С недавнего времени HttpClient от апача устарел и предлагают юзать стандартный HttpURLConnection. Я не против, но на пост/пут-запросы...

Как передать параметр в RSS парсер - Программирование Android
Здравствуйте уважаемые! В своем Android приложении использую RSS парсер по описанию на сайте anddev.ru. RSS ленты просматриваю на...

Как использовать в запросе параметр типа int - Программирование Android
Доброго времени суток. Требуется выполнить SQL-запрос, используя параметр типа int. Листинг: String selection=&quot;SELECT kkal FROM...

Передача HTML как строки из Андроида на сервер - Программирование Android
Приложение андроида принимает html-строку, которую надо передать на сервер для парсинга. Собственно алгоритм приема html и его передачи...

Параметр отображения - Программирование Android
Решил создать разметку и разместить в ней элемент, который изначально невидим, но настроен и находится на нужном месте (...

Игнорируется параметр adjustViewBounds - Программирование Android
У меня есть LinearLayout, в котором должны уживаться картинка(Занимать все свободное место) и какой-нибудь элемент. Картинка должна...

Передать параметр из одной в другую - Программирование Android
Добрый вечер. Тут небольшая проблема. Как передать (ID) - С одной AppCompatActivity в Fragment. Ну принцип такой же как на...

Что передавать в параметр типа контекст? - Программирование Android
Строчки отмечены в коде public class MainActivity extends AppCompatActivity { private static final String TAG = &quot;myLog&quot;;...

Передать параметр из одной активити в другую - Программирование Android
Всем привет, дорогие форумчане! Прошлый раз мне любезно помогли здесь, мне понравилось. Так что снова обращаюсь за помощью.:D Есть...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

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