Почтовый запрос дооснащения 2.0

Здравствуйте, я пытаюсь реализовать почтовый запрос с помощью Retrofit 2.0.

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

Спасибо


person ghost    schedule 03.04.2016    source источник
comment
Куда ты звонишь createCards()?   -  person IgorGanapolsky    schedule 03.04.2016
comment
Возможно, вы захотите переместить postCards в объект Loader, поскольку ваш ответ может поступить в более старый экземпляр действия и вызвать утечку памяти во время его обработки.   -  person Machinarius    schedule 03.04.2016


Ответы (2)


для метода публикации вы должны использовать теги @Body в интерфейсе

@POST("/api/Cards")
Call<List<Card>> createCards(@Body List<Card> cards);

и вызов из активности

Card card=new Card();
card.setId(20);
card.setTitle("New Cards");
card.setMessage("New Launched cards");

List<Card> cards=new List<Card>();
cards.add(card);
Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create())
            .build();

    RequestApi requestApi = retrofit.create(RequestApi.class);
    mCardsRequest = requestApi.createCards(cards);
    mCardsRequest.enqueue(new Callback<List<Card>>() {
        @Override
        public void onResponse(Call<List<Card>> call, Response<List<Card>> response) {
            ** what should I add here to post data **   
        }

        @Override
        public void onFailure(Call<List<Card>> call, Throwable t) {
            //
        }
    });
person sushildlh    schedule 03.04.2016
comment
поместите Log.d (теги, t.toString); в методе onFailure и скажи мне ошибку - person sushildlh; 04.04.2016

onResponse вызывается ПОСЛЕ завершения запроса. Вы не будете запрашивать ввод данных пользователем в обратном порядке (если только вы не выполняете несколько запросов или не связываете их в цепочку). Таким образом, вы уже должны иметь пользовательский ввод ДО запроса на дооснащение.

Таким образом, ваш обратный вызов onResponse — это место, где вы обрабатываете http-ответ:

    @Override
    public void onResponse(Call<List<Card>> call, Response<List<Card>> response) {
        processResponse(response.body());
    }

Но прежде чем отправить запрос (и получить ответ), вы можете добавить данные формы в свой запрос POST, вы можете сделать что-то вроде:

@POST("/api/Cards")
Call<List<Card>> createCards(@Body List<Card> cards,
        // Sort the cards using a query string param
        @Query("sort") String contractAccount),
        // Set a group id parameter as the replacement block
        @Path("id") int groupId);
person IgorGanapolsky    schedule 03.04.2016
comment
можешь объяснить как это @Igor Ganapolsky - person ghost; 03.04.2016