Java Retrofit多个请求一个响应

时间:2018-01-18 21:52:34

标签: java android retrofit

大家好,我有一个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响应,这样我就可以解析它了吗?实现这一目标的最佳方法是什么?

2 个答案:

答案 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方法同时异步调用多个请求。此链接将帮助您

https://github.com/square/retrofit/issues/1517