【发布时间】:2016-08-08 12:23:57
【问题描述】:
我正在尝试在实际下载内容之前检查来自通过 Retrofit 2.0.2 进行的 API 调用的响应的标头。
我的 API 接口如下所示:
@Headers({"Accept: application/json", "Origin: http://www.example.com"})
@HEAD("profiles")
Call<Void> getProfileHeaders(@Field("puids") String puid);
请注意,API 调用要求我在正文中指定一个名为 puids=%{UUID} 的 UUID 列表字段,以便返回响应。
如果我想在不检查标题的情况下下载数据,我会调用这样的接口:
@Headers({"Accept: application/json", "Origin: http://www.example.com"})
@FormUrlEncoded
@POST("profiles")
Call<String> getProfile(@Field("puids") String puid);
现在的问题是,当我尝试使用 getProfileHeader() 端点时,我得到以下 RuntimeException:
java.lang.IllegalArgumentException: @Field parameters can only be used with form encoding. (parameter #1)
为了使用@Field 参数(我想如果需要,POST 方法通常会这样做),我必须明确指定我使用@FormUrlEncoded,但我不能进行@HEAD 调用用那个。
我有点疑惑,我怎么才能实现我想要的,又缺少什么?
基本上我想知道如何在下载需要字段参数的 API 端点的实际正文之前检查改造调用的响应标头?
干杯!
【问题讨论】: