java - 当不使用参数和主体时,retrofit 的错误请求,这怎么可能?

标签 java android kotlin retrofit

我的项目面临着非常奇怪的行为。

我正在使用改造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/

相关文章:

java - JBoss: native 库 sqljdbc_auth.dll 已加载到另一个类加载器中

java - 服务器执行的线程数超过指定数量

java - JFlex 扫描仪 ArrayIndexOutOfBoundsException : 769

android - 如何为支持平板电脑和手机的应用程序提供导航

android - 如何在多个模块中使用 Koin?

java - mac java 9 gradle ClassNotFoundException : javax. xml.bind.JAXBElement 构建时

android - ARCore 使用前置摄像头集成 AR 应用的深度传感器?

android 多选ListView & Textview

android - 在 Jetpack Compose 中使用 SnapFlingBehavior 时,如何捕捉到 LazyColumn 的初始索引?

java - 实现多个接口(interface)的类的替代方案?