2016-11-17 1 views
-4

Я использую retrofit 2 в своем андроид-коде. Я начал делать некоторые серверные вызовы, используя то же самое, и теперь я застрял в запросе POSt, используемом в модификации.Как сделать запрос POST в android с помощью модификации 2

То, что я хочу, чтобы сделать запрос POST и данные, которые я хочу, чтобы отправить что-то вроде [ «1», «2», «3», «4»]

Я почти опробованы все пути, но не повезло.

+2

* Я почти опробовал все пути * ... Трудно поверить ... Если бы было так, почему вы не делились с нами тем, что вы пробовали до сих пор? – Selvin

+0

Итак, вы хотите, чтобы я опубликовал весь код здесь, что я пробовал до сих пор. Поэтому для вашей информации я попытался передать List непосредственно в интерфейсе с аннотациями @Body. Также путем передачи RequestBody в методе интерфейса. – user2382771

ответ

1

Существует довольно много учебных пособий, но я выбил очень быстрый пример для вас, извините слегка поспешный код и т. Д., Надеюсь, вы получите эту идею.

  1. Ваш интерфейс отдых:

    public interface MyRetrofit { 
    @POST("/users") 
    Call<MyResponse> postUser(@Body MyRequest body);} 
    
  2. Ваш Модифицированная создать

    OkHttpClient.Builder okHttpClientBuilder = new OkHttpClient.Builder(); 
    
    Retrofit retrofit = new Retrofit.Builder() 
         .baseUrl("http://little-silence-8649.getsandbox.com") 
         .client(okHttpClientBuilder.build()) 
         .addConverterFactory(GsonConverterFactory.create()) 
         .build(); 
    
    apiInterface = retrofit.create(MyRetrofit.class); 
    
  3. Вызов

    MyRequest req = new MyRequest(); 
    req.setName("Kermit"); 
    Call<MyResponse> task = apiInterface.postUser(req); 
    task.enqueue(new Callback<MyResponse>() { 
         @Override 
         public void onResponse(Call<MyResponse> call, Response<MyResponse> response) { 
          Log.d(TAG, "Success"); 
         } 
    
         @Override 
         public void onFailure(Call<MyResponse> call, Throwable throwable) { 
          Log.e(TAG, "onFailure: ", throwable); 
         } 
    }); 
    

Это должно быть очень понятно. Вы создаете свой интерфейс, который определяет все ваши вызовы REST на первом шаге. Затем на втором шаге вы создаете экземпляр модифицированной передачи в клиентском интерфейсе ok и gson converter. Конвертер gson преобразует ваши запросы в json.

Затем, наконец, звонок. Я создаю запрос, это всего лишь pojo и передайте это с помощью модифицированного api. Мы используем enqueue, потому что мы находимся в основном потоке, и мы хотим, чтобы модификация обрабатывала сети в новом потоке. Когда это будет завершено, мы перейдем к onResponse или onFailure.

Надеюсь, это поможет.

P.S В этом примере используется Sandbox, который является удивительным инструментом тестирования интерфейсов REST.

+0

Спасибо за быстрый ответ. Но я пробовал этот тип, создавая POJO, но это не работает. – user2382771