Как использовать application/json в связке с RX?

275
16 июля 2018, 05:20

Интерфейс

public interface IApiRequest {
    @POST("/v1/register")
    Observable<ResponseBody> makeRegister(@Body ApiBody.MakeRegister register);
}

Запросы

public class ApiRequest {
    private static IApiRequest init(){
        return new Retrofit.Builder()
                .baseUrl("https://slife.auth.andviro.pw")
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build().create(IApiRequest.class);
    }
    public static Observable<ResponseBody> makeRegister(String email, String password){
        return init().makeRegister(new ApiBody.MakeRegister(email,password));
    }
}

Вызовы

ApiRequest.makeRegister("chhdjd@mail.ru","sadasd22")
                .doOnSubscribe(disposable -> {})
                .doFinally(() -> {})
                .subscribe(responseBody -> {
                    Log.e("Test", "main= " + responseBody.string());
                },Throwable::printStackTrace).dispose();

При запуске получаю ошибку

Exception in thread "main" java.lang.IllegalArgumentException: Unable to create @Body converter for class com.eranewgames.slife.network.ApiBody$MakeRegister (parameter #1)
for method IApiRequest.makeRegister

Проверив код в PostMan, там все работает без проблем. Что я не так сделал в коде? Раньше я работал только с form/data типами. А тут application/json

Answer 1

Retrofit не знает как сериализовать твой объект ApiBody.MakeRegister. В билдере Retrofit-а укажи подходящий тебе ConverterFactory, например .addConverterFactory(GsonConverterFactory.create())

READ ALSO
Android выгрузить библиотеку

Android выгрузить библиотеку

В onCreate загружаю библиотеку SystemloadLibrary("name")

315
IntellIJ IDEA не учитывает модель в JSP-шаблоне

IntellIJ IDEA не учитывает модель в JSP-шаблоне

IntellIJ IDEA JSP не видит объекты, которые я передаю из контроллера

225
Как запустить чат? [закрыт]

Как запустить чат? [закрыт]

Только начинаю вникать в jms и vaadin так что не судите строго за нубский вопросЕсть простой пример jms чат https://github

253
Как в Button задать текст с EditText

Как в Button задать текст с EditText

Вот я нажал на кнопку Добавить, появилось диалоговое окно с вводом текста, я ввожу текст и нажимаю далее, окно закрывается, и LinerLayout появляется...

182