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

Передача HttpClient как параметр - Android

Восстановить пароль Регистрация
 
shulyakyarik
10 / 10 / 3
Регистрация: 28.03.2014
Сообщений: 156
16.09.2014, 20:31     Передача HttpClient как параметр #1
Есть страница которая отдает 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 как параметр
Посмотрите здесь:

Параметр отображения Android
Как использовать в запросе параметр типа int Android
Android HttpClient вылетает на телефоне
Как передать параметр в RSS парсер Android
HttpClient.execute Android
Не работает HttpClient Android
Android Передать параметр из одной активити в другую
Android Какая есть альтернатива устаревшему apache HttpClient?
Android Игнорируется параметр adjustViewBounds
Android Передать параметр из одной в другую
Android Передача HTML как строки из Андроида на сервер
Что передавать в параметр типа контекст? Android

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

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

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