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

косячит retrofit - Android

Войти
Регистрация
Восстановить пароль
 
alexjj09
2 / 2 / 0
Регистрация: 04.05.2013
Сообщений: 61
07.09.2015, 17:18     косячит retrofit #1
Решил поюзать Retrofit в своем приложении.
Сделал вот так

Java
1
2
3
compile 'com.squareup.okhttp:okhttp:2.4.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.google.code.gson:gson:2.3'
Сервис

Java
1
2
3
public interface UserService {
    @GET(Constants.Api.URL_LOGIN)
    void loginUser(@Query("email") String email, @Query("password") String password, @Query("secret") String secret, @Query("device_id") String device_id, @Query("oub_key") String pub_key, @Query("device_name") String device_name, Callback<String> cb);
Ну и наконец в активити

Java
1
2
3
4
5
RestAdapter restAdapter = new RestAdapter.Builder()
                .setEndpoint(Constants.Api.URL_BASE)
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .build();
        apiService = restAdapter.create(UserService.class);
На этот код при первой компиляции все ок, при второй тоже ок. Проходит какое то время и оп

Java
1
Caused by: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 2 path $

Пробуем поставить retrofit совеременненький, 2.0 с Call и Responce

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
Call<String> responce = service.loginUser(loginedt.getText().toString(), md5(passwordedt.getText().toString()), secret, device_id, pub_key, device_name);
 
                    responce.enqueue(new Callback<String>() {
 
                        @Override
                        public void onResponse(Response<String> response) {
                            if (response.code() == Constants.Status.ERROR_404) {
                                Toast.makeText(LoginActivity.this, getResources().getString(R.string.wrong_log_pass), Toast.LENGTH_LONG).show();
                            } else if (response.code() != Constants.Status.ERROR_404 && response.code() != Constants.Status.SUCCES) {
                                Toast.makeText(LoginActivity.this, getResources().getString(R.string.wrong_request), Toast.LENGTH_LONG).show();
                            } else {
                                startActivity(new Intent(LoginActivity.this, MainActivity.class));
                            }
                            loginPb.setVisibility(View.GONE);
                            loginBtn.setVisibility(View.VISIBLE);
                        }
 
                        @Override
                        public void onFailure(Throwable t) {
                            t.printStackTrace();
                            loginPb.setVisibility(View.GONE);
                            loginBtn.setVisibility(View.VISIBLE);
                        }
                    });
Запиливаем, получаем

Java
1
Caused by: java.lang.IllegalStateException: Expected a string but was BEGIN_OBJECT at line 1 column 2 path $

Берем старый добрый HttpGet

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
try {
                String url = Constants.Api.URL_BASE + Constants.Api.URL_LOGIN;
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
                nameValuePairs.add(new BasicNameValuePair("email", params[0]));
                nameValuePairs.add(new BasicNameValuePair("password", params[1]));
                nameValuePairs.add(new BasicNameValuePair("secret", params[2]));
                nameValuePairs.add(new BasicNameValuePair("device_id", params[3]));
                nameValuePairs.add(new BasicNameValuePair("pub_key", params[4]));
                nameValuePairs.add(new BasicNameValuePair("device_name", params[5]));
                HttpClient httpClient = new DefaultHttpClient();
                String paramsString = URLEncodedUtils.format(nameValuePairs, "UTF-8");
                HttpGet httpGet = new HttpGet(url + "?" + paramsString);
                HttpResponse response = httpClient.execute(httpGet);
            } catch (Exception e) {
                e.printStackTrace();
            }

В ответе все круто, 200, acces и тд.

Что со мной не так? Или моим ретрофитом?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.09.2015, 17:18     косячит retrofit
Посмотрите здесь:

Прокладывание маршрута и Retrofit Android
Retrofit async не успевает загрузить данные Android
Android OPTIONS запросы в Retrofit
Android Retrofit, JSON, @POST, @GET
Разницы между OkHTTP AND Retrofit Android
Библиотека Retrofit Android
Retrofit Recyclerview Android
Android Ошибка JSON в Retrofit
Android Получить заголовоки http ответа в retrofit
Android Retrofit 2. Возвращаемое значение == null
Android Относительные пути в аннотациях Retrofit
Android Retrofit 2 эффективная обработка разных ответов

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

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

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