【问题标题】:Multiple blank problem header in Retrofit 2 in KotlinKotlin 的 Retrofit 2 中的多个空白问题标题
【发布时间】:2021-09-20 22:44:52
【问题描述】:

我有两个header,其中一个有2个空格,所以改造报错,代码块如下。

@Headers(
    "Authorization: Basic some-token",
    "Content-Type: application/json"
)
@POST("client/getsession")
fun getSession(
    @Body body: String
): Single<Session>

错误消息::我得到的 HTTP 500 内部服务器错误。

disposable.add(
        oAPIService.getSession()
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribeWith(object : DisposableSingleObserver<Session>()
            {
                override fun onSuccess(t: Session) {
                    session.value = t
                    sessionError.value = false
                    sessionLoading.value = false

                    println("ok")
                    observeSessionData()
                }

                override fun onError(e: Throwable) {
                    println("Not Worked   :  "+ e.localizedMessage )
                    sessionLoading.value = false
                    sessionError.value = true


                }
            })
    )

【问题讨论】:

  • 请澄清您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。

标签: android kotlin retrofit2


【解决方案1】:

在您使用标题的方式中,您还可以添加 {},如下面的示例所示。

public interface UserService {  
@Headers({
    "Accept: application/vnd.yourapi.v1.full+json",
    "User-Agent: Your-App-Name"
})
@GET("/tasks/{task_id}")
Call<Task> getTask(@Path("task_id") long taskId);
}

另外,请查看此文档,它提供了使用标头的其他方法,它们可能适合您的代码:https://futurestud.io/tutorials/retrofit-add-custom-request-header

【讨论】:

    【解决方案2】:

    您收到的 HTTP 500 是来自服务器的错误。标题中有空格并没有错。你应该检查你的服务器的实现和日志。

    此外,由于它是一个帖子,您的服务器可能需要一个正文,而您没有在代码中提供该正文。这可能是它以 500 响应的原因

    oAPIService.getSession("a valid body")
    

    【讨论】:

      猜你喜欢
      • 2021-08-28
      • 2017-04-07
      • 1970-01-01
      • 2017-11-24
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多