我有用于改装的界面
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进行接口改造?
答案 0 :(得分:1)
您基本上不能传递null。两种可能的解决方案。
要么使用一个空的HashMap <>
new HashMap<>()
编写另一个没有该字段的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 (顺便说一下,这不是我的帖子)
答案 1 :(得分:-1)
如果您不想向请求参数发送任何值,则可以传递空Map。使用以下代码。
HashMap<String, String> map = new HashMap<String, String>();
apiInterface.get(url, getHeader(),map)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());