我正在对API请求使用Retrofit。在我的应用程序中,我在标头和正文中获取数据作为响应。众所周知,“身体”可以通过使用某些使用Gson或Jackson的库转换为POJO,以类似的方式可以将标头转换为POJO吗?或建议在一个POJO类中同时制作标头和正文的最佳方法。
注意:在标头和正文中,我都以Json格式获取数据
下面是我用来发送请求的代码。
override fun login(request: LoginModel.Request) {
val call: Call<LoginModel.Response> = apiService.login(request)
call.enqueue(object : Callback<LoginModel.Response> {
override fun onResponse(call: Call<LoginModel.Response>, response: Response<LoginModel.Response>) {
// Log.d(TAG, "login success")
if (response != null) {
val status = response.code()
var headers = response.headers();
var names = headers.names();
for (name:String in names ) {
Log.d("Testing","name:"+name+" value:"+headers.get(name))
}
if (response.body() != null) {
var loginResponse: LoginModel.Response = response.body() as LoginModel.Response;
if (status == 200) {
responseCallback?.onSuccess(loginResponse)
} else {
responseCallback?.onFailure(loginResponse)
}
}
}
}
override fun onFailure(call: Call<LoginModel.Response>, t: Throwable) {
responseCallback?.onFailure("Something went wrong while login")
}
})
}
答案 0 :(得分:0)
您可以像这样获得标题:
Headers headers=response.headers();
Headers.class的定义:
/ ** *单个HTTP消息的标头字段。值是未解释的字符串; * *
该类逐行跟踪标头值。字段上有多个逗号分隔的值 *此类会将同一行视为具有单个值的字段。是来电者的 *如果逗号允许多个值,则负责检测并分割逗号。这个 *简化了单值字段的使用,该字段的值通常包含逗号,例如Cookie或 * 日期。 * *
此类从值中修剪空白。它永远不会返回前导或尾随的值 *空格。 * *
此类的实例是不可变的。 * /
要从多个标题中获取值,请执行以下操作:
headers.values("Set-Cookie")
对于标题相同的名称:
List<String> cookieList = headers.toMultimap().get("set-cookie")