2016-06-06 2 views
0

Я пытаюсь отправить массив строк на свой сервер с помощью Retrofit. Если мой метод:Форматирование входного массива String

@FormUrlEncoded 
@Post("postData") 
Call<Response> postData(@Field("data") String[] data); 

И мой вклад:

new String[]{"data1", "data2"} 

дооснащения преобразует его:

data=data1&data=data2 

Мой вопрос: как я могу получить Дооснащение конвертировать мой массив это вместо этого:

data=[data1,data2] 

I am u sing Retrofit 2.0.2.

ответ

1

В документах, передающих список или массив в аннотации @Field, вы получите пару полей для каждого элемента. Для всего остального Retrofit использует String.valueOf. Источник here и комментарии Джейка Уортона об изменении его here.

На данный момент вы, вероятно, застреваете, создавая собственный класс и переопределяя toString. Например:

public class StringList { 
    private List<String> mData; 

    public StringList(List<String> data) { mData = data; } 

    @Override 
    public String toString() { return mData.toString(); } 
} 

И тогда ваша декларация Модифицированная становится:

@FormUrlEncoded 
@Post("postData") 
Call<Response> postData(@Field("data") StringList data); 
+0

Крысы! Похоже, ты прав. [Здесь] (https://github.com/square/retrofit/issues/1161) еще одна ссылка для тех, кто отрицает (например, я). Спасибо за помощь. –

Смежные вопросы