【问题标题】:Batch request using Retrofit使用 Retrofit 的批量请求
【发布时间】:2014-12-04 23:57:21
【问题描述】:

我想使用 Retrofit 执行批处理请求。它有什么好的方法,如何实现呢?基本上我要做的是替换 URL 的查询部分中的一些字符(仅在 URL 的路径部分中允许替换块 - 使用 @Path 注释)。

这是我的问题的伪代码。

@GET("/v2/multi?requests=/users/self,/venues/search?client_id={client_id}&client_secret={client_secret}&v={v}&ll={ll}&intent={intent}&limit={limit}")
    ProfileSearchVenuesResponse searchVenuesAndProfiles(@ReplaceBy("client_id") String clientId,
                          @ReplaceBy("client_secret") String clientSecret,
                          @ReplaceBy("v") int version,
                          @ReplaceBy("ll") String location,
                          @ReplaceBy("intent") String intent,
                          @ReplaceBy("limit") int limit);

【问题讨论】:

    标签: android http url networking retrofit


    【解决方案1】:

    @Query 就是你要找的东西:

    @GET("/v2/multi?requests=/users/self,/venues/search")
    ProfileSearchVenuesResponse searchVenuesAndProfiles(
        @Query("client_id") String clientId,
        @Query("client_secret") String clientSecret,
        @Query("v") int version,
        @Query("ll") String location,
        @Query("intent") String intent,
        @Query("limit") int limit);
    

    在 Retrofit 的 1.7.0 版(昨天发布)中,在原始问题中尝试使用 @Path 的异常消息会指导您正确的解决方案:

    URL 查询字符串“client_id={client_id}&client_secret={client_secret}&v={v}&ll={ll}&intent={intent}&limit={limit}”不能有替换块。对于动态查询参数,请使用@Query。

    【讨论】:

    • 谢谢!我使用的是 1.6.0,所以我没有得到可以使用 @Query 的信息。
    猜你喜欢
    • 1970-01-01
    • 2014-12-20
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 2015-12-11
    • 1970-01-01
    • 2020-03-04
    • 1970-01-01
    相关资源
    最近更新 更多