Невозможно прочитать ответ String на запрос Retrofit и RxJava POST

API-интерфейс

@FormUrlEncoded
@POST("register.php")
Observable<String> registerUser(@Field("email") String email, @Field("password") String password);

В моем ведущем MVP

onCreate{
  Observable<String> registerUserObservable= 
  apiInterface.registerUser("[email protected]", "1234");
  registerUserObservable.subscribeOn("schedulers.io())
         .observeOn(AndroidSchedulers.mainThread())
         .subscribe(this::handleResult, this::handleError);
}

//methods
private void handleResult(String response){
  Log.d(TAG, response);
}

private void handleError(Throwable throwable){
  Log.d(TAG, throwable.getMessage());
}

Это мой код для модификации и rxjava, и я должен опубликовать адрес электронной почты и пароль для регистрации пользователя. Сервер должен возвращать строку в случае успеха и строку в случае ошибки.

Gson gson = new GsonBuilder()
           .setLenient()
           .create();

retrofit = new retrofit2.Retrofit.Builder()
           .baseUrl(BASE_URL)
           .addConverterFactory(GsonConverterFactory.create(gson))
           .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
           .build();

Я добавил часть кода gson setLenient, потому что это дает мне Use JsonReader.setLenient(true) to accept malformed JSON at line 2 column 1 path $ ошибка, если у меня ее нет. После добавления этого я получаю ошибку JSON document was not fully consumed., которую я не знаю, как ее решить. Это из-за того, что ответ сервера является строкой?

Заранее спасибо.

вероятно, что-то не так с форматом ответа. если Use JsonReader.setLenient(true) to accept malformed JSON at line 2 column 1 path $ вообще появляется - вы, вероятно, не получаете в ответ действительный JSON

William Reed 19.05.2019 17:34
0
1
508
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если ваш сервер отправляет обычный строковый ответ, а не строку JSON, вам необходимо использовать другой конвертер, который считывает строку в String. К счастью, официально существует Преобразователь скаляров.

A Converter which supports converting strings and both primitives and their boxed types to text/plain bodies.

Другие вопросы по теме