Как добавить массив строк в HashMap‹String, String›, а затем отправить с помощью Retrofit?

Я использую Retrofit 2 для отправки вызовов API на сервер, но с параметрами мне нужно отправить массив строк, которые должны быть исключены из ответа API.

Мне нужно отправить такие параметры, как deviceToken, feedType, а также отправить массив исключенных строк, поэтому мой URL-адрес с исключенными строками должен выглядеть так:

http://test.com?test[]=1&test[]=2&test[]=3

Конечно, есть и другие недостающие требования.

Взгляните на эту строку кода:

params.put("exclusions", Arrays.deepToString(arr));

Вот мой код:

@GET("enquiry/user-feed/")
Call<UserFeed> userFeed(@QueryMap Map<String, String>   params);

HashMap<String, String> params = new HashMap<String, String>();

params.put("deviceToken", getDeviceToken());
params.put("feedType", feedType[0]);
params.put("feedOrder", order);
params.put("feedLimit", String.valueOf(limit));   

Log.d("TAG", "exclusions: : "+ Arrays.deepToString(arr));
params.put("exclusions",  Arrays.deepToString(arr));

person Zookey    schedule 25.02.2016    source источник


Ответы (2)


Проблема не связана с переоснащением вообще. У вас плавающий порядок, потому что java.util.HashMap не гарантирует порядок. Вместо этого вы должны использовать LinkedHashMap, чтобы получить фиксированный порядок элементов.

источник: https://stackoverflow.com/a/31748890/1949658

person Nikola Tesla    schedule 25.02.2016
comment
Почему LinkedHashMap? Проблема в том, что я не могу добавить массив строк в хэш-карту, которая принимает строку для ключа и значения. - person Zookey; 25.02.2016

использовать LinkedHashMap

LinkedHashMap<String, String> params = new LinkedHashMap<String, String>();

params.put("deviceToken", getDeviceToken());
params.put("feedType", feedType[0]);
params.put("feedOrder", order);
params.put("feedLimit", String.valueOf(limit));  
person Rasoul Miri    schedule 09.07.2017