Как сделать запрос POST с помощью модификации 2?

Я смог запустить только приветственный пример (GithubService) из документов.

Проблема в том, что когда я запускаю свой код, я получаю следующую ошибку, внутри onFailure()

Используйте JsonReader.setLenient (true), чтобы принять неверный JSON в строке 1, столбец 1 путь $

Мой API принимает значение параметра POST, поэтому нет необходимости кодировать их как JSON, но он возвращает ответ в JSON.

Для ответа я получил класс ApiResponse, который я создал с помощью инструментов.

Мой интерфейс:

 public interface ApiService { @POST("/") Call<ApiResponse> request(@Body HashMap<String, String> parameters); } 

Вот как я пользуюсь сервисом:

 HashMap<String, String> parameters = new HashMap<>(); parameters.put("api_key", "xxxxxxxxx"); parameters.put("app_id", "xxxxxxxxxxx"); Call<ApiResponse> call = client.request(parameters); call.enqueue(new Callback<ApiResponse>() { @Override public void onResponse(Response<ApiResponse> response) { Log.d(LOG_TAG, "message = " + response.message()); if(response.isSuccess()){ Log.d(LOG_TAG, "-----isSuccess----"); }else{ Log.d(LOG_TAG, "-----isFalse-----"); } } @Override public void onFailure(Throwable t) { Log.d(LOG_TAG, "----onFailure------"); Log.e(LOG_TAG, t.getMessage()); Log.d(LOG_TAG, "----onFailure------"); } }); 

Если вы не хотите, чтобы кодированные параметры JSON использовали это:

 @FormUrlEncoded @POST("/") Call<ApiResponse> request(@Field("api_key") String apiKey, @Field("app_id") String appId); 

Вы должны знать, как вы хотите кодировать параметры post. Важным является также аннотация @Header в следующем. Он используется для определения используемого типа контента в HTTP-заголовке.

 @Headers("Content-type: application/json") @POST("user/savetext") public Call<Id> changeShortText(@Body MyObjectToSend text); 

Вы должны каким-то образом закодировать свои параметры. Чтобы использовать JSON для передачи, вы должны добавить .addConverterFactory(GsonConverterFactory.create(gson)) в свою декларацию о .addConverterFactory(GsonConverterFactory.create(gson)) .

 Retrofit restAdapter = new Retrofit.Builder() .baseUrl(RestConstants.BASE_URL) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create(gson)) .client(httpClient) .build(); 

Другим источником вашей проблемы может быть то, что JSON, который исходит из остальных бэкэнд, кажется неправильным. Вы должны проверить синтаксис json с помощью валидатора, например http://jsonlint.com/ .

Intereting Posts
Как показать строку состояния Android без сенсорного экрана? Получение «Невозможно разрешить метод» addOnCompletionListener () «…» при попытке разместить некоторый код внутри метода builder.setPositiveButton onClick () Как начать игровое программирование без графического художника? Anko: внутренняя область применения, сбивающее с толку разрешение собственности Замените кнопку входа в Google Plus с помощью настраиваемого изображения в android Лучшая практика: постоянно обновлять ArrayAdapter Подключение к 802.1x WiFi с помощью тега NFC Что люди подразумевают под ПЗУ и прошивкой в ​​контексте андроида? Как сохранить холст чертежа в android? NotifyDataSetChanged в адаптере Curser, не работающем с listfragment Как подавать данные в PagerAdapter Веб-просмотр Android после того, как onJsAlert не отвечает Как выполнить уведомление-действие (щелчок) на заблокированном экране? Как определить количество используемых пальцев? Карта Android Увеличить, чтобы показать все контакты