我的项目面临着非常奇怪的行为。
我正在使用改造v2.6.0
我正在编写这样的代码:
@GET("{department}/details/")
fun getCouponDetailHistory(@Header("Authorization") token: String,
@Path("department") department: String): Deferred<Response<Any>>
我从服务调用它,当然发送参数。
我启用了 Debug模式来跟踪查询,我看到了这一点:
INFO [2019-08-02 10:03:13,132] okhttp3.OkHttpClient: --> GET https://my-url/departmentId/details
INFO [2019-08-02 10:03:13,405] okhttp3.OkHttpClient: <-- 400 Bad Request https://my-url/departmentId/details (272ms, unknown-length body)
如果我使用 postman 进行一个 super 简单的请求,而不是 URL 和授权 token (我也从我的代码中获取它,知道它是相同的),它就可以工作。
我很难理解我为什么会在这里收到错误的请求,可能是我的配置?
我是这样的。
fun retrofitClient(baseUrl: String): Client = Retrofit.Builder()
.baseUrl(baseUrl)
.addCallAdapterFactory(CoroutineCallAdapterFactory())
//.addConverterFactory(JacksonConverterFactory.create(jsonMapper))
.addConverterFactory(
GsonConverterFactory.create())
.client(okHttpClient)
.build()
.create()
如您所见,我之前添加了 JacksonConverterFactory。
它适用于我拥有的 POST 端点,但不适用于我的 GET。
有什么想法吗?
最佳答案
好吧,在我时间之后我发现客户端上缺少一个 header 。
我是这样添加的
@Headers("Accept: application/json")
@GET("myurl")
这解决了问题
关于java - 当不使用参数和主体时,retrofit 的错误请求,这怎么可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57324374/