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

Android query и HTTP Post - Android

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
glnix
14 / 14 / 5
Регистрация: 08.04.2013
Сообщений: 75
17.03.2014, 10:18     Android query и HTTP Post #1
Добрый день.
Очень уж понравилась библиотека. Но ни как не получается передать корректный POST запрос.
Вот кусок кода:
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
HashMap<String, Object> params = new HashMap<String, Object>();
        params.put("p[]", "1");
        params.put("p[]", "0");
        params.put("p[]", "");
        params.put("p[]", "");
        params.put("p[]", "0");
        params.put("p[]", "1");
        params.put("p[]", "");
        params.put("p[]", "");
        params.put("p[]", "");
        params.put("p[]", "");
        params.put("p[]", startStreetIdPOST);
        params.put("p[]", endStreetPOST);
        params.put("p[]", "1");
        params.put("p[]", "");
        params.put("p[]", startHousePOST + "#$" + endHousePOST);
        params.put("sms", "0");
        params.put("iphone", "");
        params.put("predvtsms", "");
        params.put("java", "0");
        for (Map.Entry<String, Object> entry : params.entrySet()) {
            Log.d(LOGTAG, entry.getKey()+ " "+entry.getValue());
        }
        aq.progress(R.id.pb1).ajax(GET_COST_POST_PAGE, params, JSONObject.class, new AjaxCallback<JSONObject>() {
Значение ключа p[] обновляется с каждым вызовом params.put(), что в общем то и логично.
Запихать бы это дело в ArrayList, но aq.ajax() такое дело не скушает.
Что делать? Печальбеда. =)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
chizz
 Аватар для chizz
979 / 493 / 54
Регистрация: 19.03.2013
Сообщений: 3,059
Записей в блоге: 18
Завершенные тесты: 1
17.03.2014, 13:54     Android query и HTTP Post #2
Цитата Сообщение от glnix Посмотреть сообщение
Запихать бы это дело в ArrayList, но aq.ajax() такое дело не скушает.
Что делать? Печальбеда. =)
Цитата Сообщение от glnix Посмотреть сообщение
Но ни как не получается передать корректный POST запрос.
Так в чем проблема? Запихать в ArrayList или корректно передать POST запрос?
glnix
14 / 14 / 5
Регистрация: 08.04.2013
Сообщений: 75
17.03.2014, 14:15  [ТС]     Android query и HTTP Post #3
Цитата Сообщение от chizz Посмотреть сообщение
Так в чем проблема? Запихать в ArrayList или корректно передать POST запрос?
chizz, проблема в том, что если я передаю Map, то у меня передается один параметр p[], а не массив.
Хотя тот же код, но с использованием ASyncTask и Apache.commons.net работает корректно, вот пример:
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
@Override
        protected Void doInBackground(String... strings) {
            try {
                HttpClient httpclient = new DefaultHttpClient();
                HttpPost httppost = new HttpPost(GET_COST_POST_PAGE);
                httppost.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0");
                httppost.setHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
                httppost.setHeader("Accept", "application/json, text/javascript, */*; q=0.01");
                List<NameValuePair> params = new ArrayList<NameValuePair>();
                params.add(new BasicNameValuePair("p[]", "1"));
                params.add(new BasicNameValuePair("p[]", "0"));
                params.add(new BasicNameValuePair("p[]", ""));
                params.add(new BasicNameValuePair("p[]", ""));
                params.add(new BasicNameValuePair("p[]", "0"));
                params.add(new BasicNameValuePair("p[]", "1"));
                params.add(new BasicNameValuePair("p[]", ""));
                params.add(new BasicNameValuePair("p[]", ""));
                params.add(new BasicNameValuePair("p[]", ""));
                params.add(new BasicNameValuePair("p[]", ""));
                params.add(new BasicNameValuePair("p[]", strings[0]));
                params.add(new BasicNameValuePair("p[]", strings[2]));
                params.add(new BasicNameValuePair("p[]", "1"));
                params.add(new BasicNameValuePair("p[]", ""));
                params.add(new BasicNameValuePair("p[]", strings[1]+"#$"+strings[3]));
                params.add(new BasicNameValuePair("sms", "0"));
                params.add(new BasicNameValuePair("iphone", ""));
                params.add(new BasicNameValuePair("predvtsms", ""));
                params.add(new BasicNameValuePair("java", "0"));
                httppost.setEntity(new UrlEncodedFormEntity(params, "UTF-8"));
                HttpResponse response = httpclient.execute(httppost);
                HttpEntity entity = response.getEntity();
                result = EntityUtils.toString(entity,"UTF-8");
            } catch (IOException e) {
                e.printStackTrace();
            }
            return null;
        }
Т.е. все параметры передаются, сервер отвечает без ошибок.
chizz
 Аватар для chizz
979 / 493 / 54
Регистрация: 19.03.2013
Сообщений: 3,059
Записей в блоге: 18
Завершенные тесты: 1
17.03.2014, 14:19     Android query и HTTP Post #4
ПРобовал конвертнуть ArrayList в HashMap?

Java
1
2
3
4
HashMap<String, Product> productMap = new HashMap<String, Product>();
for (Product product : productList) {
   productMap.put(product.getProductCode(), product);
}
glnix
14 / 14 / 5
Регистрация: 08.04.2013
Сообщений: 75
17.03.2014, 14:58  [ТС]     Android query и HTTP Post #5
Цитата Сообщение от chizz Посмотреть сообщение
ПРобовал конвертнуть ArrayList в HashMap?

Java
1
2
3
4
HashMap<String, Product> productMap = new HashMap<String, Product>();
for (Product product : productList) {
   productMap.put(product.getProductCode(), product);
}
chizz, попробовал, но безрезультатно. Так же заменяется значение по имени ключа.
chizz
 Аватар для chizz
979 / 493 / 54
Регистрация: 19.03.2013
Сообщений: 3,059
Записей в блоге: 18
Завершенные тесты: 1
17.03.2014, 15:35     Android query и HTTP Post #6
А если params.put("p[]", my_array_list);

Туда же можно любой Object пихнуть...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.03.2014, 07:47     Android query и HTTP Post
Еще ссылки по теме:

Подключение http библиотек в android studio Android
Android Обработка результата POST-запроса в Android
Отправка Post запроса в Android предложении Android
Android RESTful-сервиса с Spring for Android POST запрос
Http POST запрос, как правильно написать Android

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

Или воспользуйтесь поиском по форуму:
glnix
14 / 14 / 5
Регистрация: 08.04.2013
Сообщений: 75
18.03.2014, 07:47  [ТС]     Android query и HTTP Post #7
Разобрался. Вот так нужно делать:
Java
1
2
3
4
5
6
7
8
9
10
List<NameValuePair> pairs = new ArrayList<NameValuePair>();
       pairs.add(new BasicNameValuePair("p[]", "1"));
       pairs.add(new BasicNameValuePair("p[]", "0"));
       pairs.add(new BasicNameValuePair("p[]", ""));
       pairs.add(new BasicNameValuePair("p[]", ""));
       //и т.д.
       HttpEntity entity = new UrlEncodedFormEntity(pairs, "UTF-8");
       Map<String, Object> params = new HashMap<String, Object>();
       params.put(AQuery.POST_ENTITY, entity);
       aq.progress(R.id.pb1).ajax(GET_COST_POST_PAGE, params, JSONObject.class, “ajaxcb”);
Yandex
Объявления
18.03.2014, 07:47     Android query и HTTP Post
Ответ Создать тему
Опции темы

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