java.lang.IllegalArgumentException: URL 查询字符串不能有替换块

java.lang.IllegalArgumentException: URL query string must not have replace block

我正在使用 Retrofit 和 GET 请求:

@GET("Master/GetConsignerPartyList?prefix={claimId}")
    Observable<ConsignerPartyResponse> consignerPartyReq(@HeaderMap Map<String, String> headers, @Path("claimId") String search);

并出现此错误:

java.lang.IllegalArgumentException: URL query string "prefix={claimId}" must not have replace block. For dynamic query parameters use @Query.

怎么了?

claimId 是您在 URL - ?prefix={claimId}"

中设置的查询的一部分

@Path 替换路径中的占位符,即 @GET("Master/{claimId}/").

要在查询中替换只需使用 @Query("claimId"):

@GET("Master/GetConsignerPartyList?prefix={claimId}")
Observable<ConsignerPartyResponse> consignerPartyReq(
    @HeaderMap Map<String, String> headers, 
    @Query("claimId") String search);

从您的 url 中删除 ?prefix={claimId} 因为查询名称在 url.

中不应是静态的
@GET("Master/GetConsignerPartyList")
Observable<ConsignerPartyResponse> consignerPartyReq(
              @HeaderMap Map<String, String> headers,
              @Query("prefix") String search);

它会起作用:-)