在android中使用改型获得作为POJO的API响应头

在android中使用改型获得作为POJO的API响应头,android,http-headers,retrofit,retrofit2,Android,Http Headers,Retrofit,Retrofit2,我正在对API请求进行改装。在我的应用程序中,我在头和体中都获得数据作为响应。正如我们都知道的,“body”可以通过使用Gson或Jackson等库转换为POJO,以类似的方式,我们是否可以将标题转换为POJO?或者建议在一个POJO类中制作页眉和正文的最佳方法。 注意:在header和body中,我都以Json格式获取数据 下面是我用来发送请求的代码 override fun login(request: LoginModel.Request) { val call: Call<

我正在对API请求进行改装。在我的应用程序中,我在头和体中都获得数据作为响应。正如我们都知道的,“body”可以通过使用Gson或Jackson等库转换为POJO,以类似的方式,我们是否可以将标题转换为POJO?或者建议在一个POJO类中制作页眉和正文的最佳方法。

注意:在header和body中,我都以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")
        }
    })
}
覆盖有趣的登录(请求:LoginModel.request){
val call:call=apiService.login(请求)
排队(对象:Callback{
覆盖fun onResponse(调用:调用,响应:响应){
//Log.d(标记“登录成功”)
if(响应!=null){
val status=response.code()
var headers=response.headers();
var name=headers.names();
for(名称:名称中的字符串){
Log.d(“测试”,“名称:“+name+”值:“+headers.get(name))
}
if(response.body()!=null){
var loginResponse:LoginModel.Response=Response.body()作为LoginModel.Response;
如果(状态==200){
responseCallback?.onSuccess(登录响应)
}否则{
responseCallback?.onFailure(登录响应)
}
}
}
}
覆盖失效时的乐趣(调用:调用,t:可丢弃){
responseCallback?.onFailure(“登录时出错”)
}
})
}

您可以得到如下标题:

Headers headers=response.headers();
Headers.class定义:

/** *单个HTTP消息的头字段。值是未解释的字符串; * *此类逐行跟踪标题值。具有多个逗号分隔值的字段 *此类会将同一行视为具有单个值的字段。这是打电话的人的电话 *如果其字段允许多个值,则负责检测并拆分逗号。这 *简化了值通常包含逗号的单值字段的使用,如cookie或 *日期。 * *此类从值中修剪空白。它从不返回前导或尾随的值 *空白。 * *此类的实例是不可变的。 */

要从多个标题中获取值,请执行以下操作:

headers.values("Set-Cookie")
对于标题的相同名称:

List<String> cookieList = headers.toMultimap().get("set-cookie")
List-cookieList=headers.toMultimap().get(“设置cookie”)

您可以得到如下标题:

Headers headers=response.headers();
Headers.class定义:

/** *单个HTTP消息的头字段。值是未解释的字符串; * *此类逐行跟踪标题值。具有多个逗号分隔值的字段 *此类会将同一行视为具有单个值的字段。这是打电话的人的电话 *如果其字段允许多个值,则负责检测并拆分逗号。这 *简化了值通常包含逗号的单值字段的使用,如cookie或 *日期。 * *此类从值中修剪空白。它从不返回前导或尾随的值 *空白。 * *此类的实例是不可变的。 */

要从多个标题中获取值,请执行以下操作:

headers.values("Set-Cookie")
对于标题的相同名称:

List<String> cookieList = headers.toMultimap().get("set-cookie")
List-cookieList=headers.toMultimap().get(“设置cookie”)

谢谢您的回复。在我的代码中,我可以得到标题。我想将这些标题转换为POJO。有什么解决办法吗?据我所知,你不能。谢谢你的回复。在我的代码中,我可以得到标题。我想将这些标题转换为POJO。有什么解决办法吗?据我所知,你不能。