Модифицированная карта обнуляемых параметров - PullRequest
0 голосов
/ 24 октября 2018

У меня есть интерфейс для модернизации

interface ApiInterface {

    @GET
    Observable<okhttp3.ResponseBody> get(@Url String url,
                                         @HeaderMap Map<String, Object> headerMap,
                                         @QueryMap HashMap<String, String> queryMap );
}

Я так называю, и он отлично работает

HashMap<String, String> map = new HashMap<String, String>();
map.put("id","xyz");
apiInterface.get(url,  getHeader(),map)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread());

, но когда я передаю null, он не работает

return apiInterface.get(url,  getHeader(),null)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread());

Как передать NULL для модернизации интерфейса?

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Вы не можете передать значение null в принципе.Два возможных решения.

  1. Либо используйте пустой HashMap <>

          new HashMap<>()
    
  2. Напишите еще один вызов API без этого поля, как показано ниже.

интерфейс ApiInterface {

@GET
Observable<okhttp3.ResponseBody> get(@Url String url,
                                     @HeaderMap Map<String, Object> headerMap,
                                     @QueryMap HashMap<String, String> queryMap );

}

интерфейс ApiInterface {

@GET
Observable<okhttp3.ResponseBody> get(@Url String url,
                                     @QueryMap HashMap<String, String> queryMap );

} ​​

Вы можетеболее подробную информацию вы можете прочитать здесь: https://github.com/square/retrofit/issues/1488 (Кстати, это не мой пост)

0 голосов
/ 24 октября 2018

Вы можете передать пустую карту, если не хотите отправлять какие-либо значения в ваш параметр запроса.Используйте следующий код.

HashMap<String, String> map = new HashMap<String, String>();
apiInterface.get(url,  getHeader(),map)
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...