2016-12-08 3 views
0

Я разрабатываю приложение клиента для андроид и мой API требует от меня, чтобы отправить имена изображений в ArrayList<String> как:Retrofit2 проблемы с массивом проводки

collection[0] = 15a877ce9f22bc8349cac80565c4bff6.jpg 
collection[1] = 25a877ce9f22bc8349cac80565c4bff6.jpg 

, но когда я отправить это идет в форме, как:

collection[] = 15a877ce9f22bc8349cac80565c4bff6.jpg 
collection[] = 25a877ce9f22bc8349cac80565c4bff6.jpg 

моя модифицированная интерфейс:

@Field("collection[]") ArrayList<String> collection); 

, как я могу достичь требуемого результата?

любая помощь будет оценена! Спасибо!

ответ

0

Не помещайте [] во имя @Field, я не знаю точно, почему вы делаете это, но это может привести к путанице, как те скрытность ...

Вы можете использовать что-то вроде этого:

// ApiService.java 
@FormUrlEncoded 
@POST("/api/projectLost") 
public void projectMarkLost(
    @Field("apiKey") String apiKey, 
    @Field("project_id") int projectId, 
    @Field("lost_project_remark") String lostProjectRemark, 
    @Field("lost_project_reasons") ArrayList<Integer> lostProjectReasons, 
    Callback<JsonObject> cb 
); 

// Content wish to post 
POST content: 
apiKey = EzAvFvScs45a2DRI0MktdIDeVRbP59 
project_id = 986 
remark = testing 
details = [detail_1,detail_2] 
+0

Я должен положить его из-за laravel backend. Если вы этого не сделаете, он будет отвечать на 400 запросов. На самом деле вызвала у меня еще одну бессонную ночь :) –

+0

Извините, что выслушали ...:/У вас есть решение в конце концов? – Jaythaking

+0

Да, я отправил себе ответ - пожалуйста, взгляните. Не удалось найти более «ортодоксальное» решение, хотя –

0

Я нашел решение использовать карту для того чтобы достигнуть желаемого результата

@FormUrlEncoded 
@POST("user/news") 
Call<CreateNews> createNews(
     @Field("text") String text, 
     @FieldMap Map<String, String> collection); 

и в методе:

public void createNews(String text, ArrayList<String> collection, final Callback<CreateNews> callback){ 
    News createNews = ServiceGenerator.createService(News.class); 

    SortedMap fields = new TreeMap<String, String>(); 

    for (int i = collection.size()-1 ; i >= 0 ; i--) { 
     fields.put("collection["+i+"]", collection.get(i)); 
    } 

    Call<CreateNews> call = createNews.createNews(text, fields); 
    call.enqueue(callback); 
Смежные вопросы