Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Spring for Android POST request / 11 сообщений из 11, страница 1 из 1
09.05.2016, 21:29
    #39231967
Асланали
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring for Android POST request
Здравствуйте коллеги.
Отправляю POST запрос на сервер.
Думаю что параметры в POST запрос вовсе не попадают. Потому что ответ от сервера такой:
Код: java
1.
{"error":true,"error_msg":"input data is not correct. Enter again!"}



Сам код:
Код: 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.
private class HttpRequestTask extends AsyncTask<Void, Void, TestNameDTO> {
        @Override
        protected TestNameDTO doInBackground(Void... params) {
            try {
 
                List<MediaType> types = Arrays.asList(
                        new MediaType("text", "html", Charset.forName("UTF-8")),
                        new MediaType("application", "json", Charset.forName("UTF-8")),
                        new MediaType("application", "*+json", Charset.forName("UTF-8"))
                );
 
                String url = "//login.php";
                RestTemplate restTemplate = new RestTemplate();
                MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
                jsonConverter.setObjectMapper(new ObjectMapper());
                jsonConverter.setSupportedMediaTypes(types);
                restTemplate.getMessageConverters().add(jsonConverter);
 
                Map<String, String> map = new HashMap<String, String>();
                map.put("email", "w@mail.com");
                map.put("password", "12345678");
 
 
                TestNameDTO entity = restTemplate.postForObject(url, map, TestNameDTO.class);
 
                Log.i("MY_TAG", " ERROR: " + entity.getError()
                        + " ERROR_MSG: " + entity.getError_msg()
                        + " UID: " + entity.getUid());
 
                return entity;
 
            } catch (Exception e) {
                Log.e("LoginActivity", e.getMessage(), e);
            }
 
            return null;
        }
 
        @Override
        protected void onPostExecute(TestNameDTO entity) {
            Log.i("MY_TAG", " ERROR: " + entity.getError()
                    + " ERROR_MSG: " + entity.getError_msg()
                    + " UID: " + entity.getUid());
        }
 
    }


Не могу пройти авторизацию на сервере
Библиотеки подключены к проекту
compile 'org.springframework.android:spring-android-rest-template:2.0.0.BUILD-SNAPSHOT';
compile 'com.fasterxml.jackson.core:jackson-databind:2.7.3'
...
Рейтинг: 0 / 0
09.05.2016, 21:54
    #39231972
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring for Android POST request
АсланалиДумаю что параметры в POST запрос вовсе не попадают. Потому что ответ от сервера такой:
Код: java
1.
{"error":true,"error_msg":"input data is not correct. Enter again!"}



такой ответ может означать что угодно. например что автору сего поделия было лень разбираться, что не так, и он на любые ошибки выдает одно и то же. может пароль/логин не правильные, может там user-agent проверяется или referrer или бог знает что еще.
возьми и заPOST-и тоже самое вручную, есть плагины для Firefox и для хрома (Poster) - и посмотри, есть ошибка или нет.
...
Рейтинг: 0 / 0
10.05.2016, 06:37
    #39232032
Асланали
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring for Android POST request
chpasha,

Спасибо за ответ.
Дело в том что проверяя на PostMan-не (как раз пример того что вы советовали для тестирования запроса) все отрабатывает хорошо. Сервер отвечает корректно выдавая нужный JSON.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
{
  "error": false,
  "uid": "5730bea2319df0.98827769",
  "user": {
    "name": "testName",
    "email": "testName@mail.com",
    "created_at": "2016-05-09 19:45:22",
    "updated_at": null
  }
}
...
Рейтинг: 0 / 0
10.05.2016, 08:35
    #39232062
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring for Android POST request
Если это действие можно эмитировать браузером, то попробуй подсмотреть, что и как браузер отправляет.
Посмотреть можно пользуясь локальным прокси https://sourceforge.net/projects/paros/
...
Рейтинг: 0 / 0
10.05.2016, 10:47
    #39232142
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring for Android POST request
нужно убедиться, что спринг корректно отрабатывает параметры в виде мапы, в интернете я видел примеры на базе MultiValueMap, скорее всего это здесь ни при чем, но есть маленькая вероятность, что спрингу не все равно. потом я бы посмотрел в сторону user-agent. еще чисто для выявления слабого звена можно взять любой другой клиент, httpclient, HttpURLConnection, retrofit. в общем нужно исключить вариант ошибки на клиенте и тогда можно гадать, что не нравится серверу
...
Рейтинг: 0 / 0
10.05.2016, 10:52
    #39232146
Асланали
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring for Android POST request
chpashaMultiValueMap
Да, вы правы. Видел такое тоже. Попробую.
На счет клиента отправляющего запрос библиотека Volley, что скажите?
Возможно ли совместная работа библиотек Volley и Jackson?
...
Рейтинг: 0 / 0
10.05.2016, 11:29
    #39232192
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring for Android POST request
АсланалиНа счет клиента отправляющего запрос библиотека Volley, что скажите?

не проникся. повсюду смешение http и андроидного кода
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
StringRequest stringRequest = new StringRequest(Request.Method.GET, url,
            new Response.Listener<String>() {
    @Override
    public void onResponse(String response) {
        // Display the first 500 characters of the response string.
        mTextView.setText("Response is: "+ response.substring(0,500));
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        mTextView.setText("That didn't work!");
    }
});



рекомендую посмотреть retrofit в связке с androidannotations, или androidannotations и их же restclient (кстати он кажется спринговый resttemplate юзает), но решай сам, а не потому что какой-то чувак в интернете присоветовал
...
Рейтинг: 0 / 0
10.05.2016, 11:40
    #39232216
Асланали
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring for Android POST request
chpasha,
Понял вас, спасибо.
Вами приведенный пример, это пример Volley?
...
Рейтинг: 0 / 0
10.05.2016, 11:40
    #39232218
chpasha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring for Android POST request
АсланалиВами приведенный пример, это пример Volley?
он самый
...
Рейтинг: 0 / 0
10.05.2016, 11:43
    #39232224
Асланали
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring for Android POST request
chpasha,
Спасибо большое вам за советы!
Благодарю также всех за ответы!
...
Рейтинг: 0 / 0
11.05.2016, 20:56
    #39233770
Асланали
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Spring for Android POST request
chpasha, думаю остановится на Retrofit. Spring пробовать не хочу.
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Spring for Android POST request / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]