大家好,我有一个api端点,只需要一个参数" name": https://api.xxxxx.com/v1/test/ {名称} /
我坚持要求多次请求 (例如https://api.xxxxx.com/v1/test/ALEX/,https://api.xxxxx.com/v1/test/ELISA/, https://api.xxxxx.com/v1/test/JOE/)
我需要在recyclerview中解析来自这3个调用的所有数据,每个请求都在不同的行中。
无论如何我可以提出3请求然后只获得1个JSON响应,这样我就可以解析它了吗?实现这一目标的最佳方法是什么?
答案 0 :(得分:1)
我假设你在改装api界面中有类似下面的代码
@GET("v1/test/{name}/")
Observable<UserModel> getUserBy(@Path("name") name)
然后在您的业务逻辑中,您可以致电。
Observable.zip(retrofitApi.getUser("ALEX"), retrofitApi.getUser("ELISA"), retrofitApi.getUser("JOE"), (u1, u2, u3) -> {
// prepare your returned users in a way suitable for further consumption
// in this case I put them in a list
return Arrays.asList(u1, u2, u3);
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe( listOfUsers -> // TODO: do something with your users)
希望这有帮助。
答案 1 :(得分:0)
创建一个像这样的界面
@FormUrlEncoded
@POST("/locations/add.json")
void sendMultipleLocations(@Query("token")String token, @FieldMap List<Map<String, String>> multipleLocations, Callback<String> callback);
并使用retrofit2的enqueue方法同时异步调用多个请求。此链接将帮助您