Retrofit的转换器

一、前言

1.为什么要使用Retrofit转换器

在我们接受到服务器的响应后,目前无论是OkHttp还是Retrofit都只能接收到String字符串类型的数据,在实际开发中,我们经常需要对字符串进行解析将其转变为一个JavaBean对象,比如服务器响应数据为JSON格式字符串,那么我们可以自己利用GSON库完成反序列化的操作,而Retrofit提供了多个转换器使得响应能够完成自动的数据转换。

2.需要用到的是如下开放网址的登录接口

https://www.wanandroid.com/

3.需要请求的post接口

二、手动进行数据转换

1.引入依赖

    implementation 'com.squareup.retrofit2:converter-gson:2.9.0'

2.代码展示

创建接口类对象

public interface WanAndroidService {@POST("user/login")@FormUrlEncodedCall<ResponseBody> login(@Field("username") String username, @Field("password") String pwd);
}

手动转换代码展示

public class WanAndroidUnitTest {Retrofit retrofit = new Retrofit.Builder().baseUrl("https://www.wanandroid.com/").build();//创建retrofit对象WanAndroidService wanAndroidService = retrofit.create(WanAndroidService.class);//创建接口类对象,并且设置为全局变量。@Testpublic void LoginTest() throws IOException, JSONException {Call<ResponseBody> call = wanAndroidService.login("Anglin", "rssqzqyp");Response<ResponseBody> response = call.execute();String result = response.body().toString();System.out.println(result);//手动进行数据转换BaseResponse baseResponse = new Gson().fromJson(result, BaseResponse.class);System.out.println(baseResponse);}
}

三、自动转换器自动进行json格式转换

创建接口类对象

public interface WanAndroidService2 {@POST("user/login")@FormUrlEncodedCall<BaseResponse> login(@Field("username") String username, @Field("password") String pwd);
}

自动转换代码展示

public class WanAndroidUnitTest {//利用转换器自动进行数据转换Retrofit retrofit2 = new Retrofit.Builder().baseUrl("https://www.wanandroid.com/").addConverterFactory(GsonConverterFactory.create())//添加转换器.build();//创建retrofit对象WanAndroidService2 wanAndroidService2 = retrofit2.create(WanAndroidService2.class);//创建接口类对象,并且设置为全局变量。@Testpublic void loginConvertTest() throws IOException {Call<BaseResponse> call = wanAndroidService2.login("Anglin", "rssqzqyp");Response<BaseResponse> response = call.execute();BaseResponse baseResponse = response.body();System.out.println(baseResponse);}
}

自动json格式转换测试结果展示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/251047.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言结构体介绍(超详细)

文章目录 每日一言结构体是什么?为什么要使用结构体?如何使用结构体&#xff1f;结构体的定义结构体的声明如何访问结构体中的成员 结构体内存对齐什么是结构体内存对齐对齐规则修改默认对齐数 为什么存在结构对齐 总结结语 每日一言 Develop your imagination – you can u…

Android : 篮球记分器app _简单应用

示例图&#xff1a; 1.导包 在build.gradle 中 加入 // 使用androidx版本库implementation androidx.lifecycle:lifecycle-extensions:2.1.0-alpha03 2. 开启dataBinding android{...// 步骤1.开启data bindingdataBinding {enabled true}...} 3.写个类继承 ViewModel pac…

dockerdesktop 制作asp.net core webapi镜像-连接sqlserver数据库容器

1.使用visual studio 创建 asp.net core webapi项目 选择启用docker 会生成Dockerfile文件 2.使用efcore连接数据库&#xff0c;安装efcore的包 <ItemGroup><PackageReference Include"Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version&qu…

《Pandas1.x实例精解 》书籍分享

Pandas介绍 Pandas&#xff1a;Python数据分析的瑞士军刀 在数据科学、机器学习和人工智能日益繁荣的今天&#xff0c;有效、准确地处理和分析数据已经成为了成功的关键。Python&#xff0c;作为一种强大且易于学习的编程语言&#xff0c;已经在这一领域占据了重要的地位。而…

P4715 【深基16.例1】淘汰赛-仅思路

首先从题干要求入手&#xff0c;我们可以了解到题目要求是二进一&#xff0c;不难想到这是二叉树的题 再来&#xff0c;从题干可以知道&#xff0c;我们所采用的结构体除了需要有树的两个左右节点指针外&#xff0c;还需要两个变量用来储存“能力值”和“编号” 在这道题中&am…

MyBatis 常见面试题

目录 1.MyBatis——概述1.1.什么是 ORM 框架&#xff1f;1.2.✨谈谈对 MyBatis 的理解。1.3.使用 MyBatis 相对于直接使用 SQL 有哪些优点&#xff1f;1.4.MyBatis 有什么优缺点&#xff1f;1.5.✨MyBatis 的分层结构是什么样的&#xff1f;1.6.✨MyBatis 的执行流程是什么样的…

学习设计模式的网站

Refactoring and Design Patternshttps://refactoring.guru/

【Pytorch使用自制数据集,Dataloader】

数据集结构 话不多说&#xff0c;直接上核心代码 myDataset.py from collections import Counter from torch.utils.data import Dataset import os from PIL import Imageclass MyDataset(Dataset):"""读取自制的数据集args:- image_dir: 图片的地址- labe…

uniapp横向滚动示例

目录 插件市场案例最后 插件市场 地址 案例 地址 最后 感觉文章好的话记得点个心心和关注和收藏&#xff0c;有错的地方麻烦指正一下&#xff0c;如果需要转载,请标明出处&#xff0c;多谢&#xff01;&#xff01;&#xff01;

如何使用Python核对文件夹内的文件

说明&#xff1a;日常工作中&#xff0c;我们经常会遇到这样的场景&#xff1a;核对A、B文件夹中文件的差异&#xff0c;找出A、B文件夹中不同部分的文件&#xff1b; 本文介绍如何使用Python来实现&#xff1b; 第一步&#xff1a;获取文件清单 首先&#xff0c;我们要获取…

Pyside2 (Qt For Python)进度条功能实现

Pyside2 (Qt For Python)进度条功能实现 进度条&#xff08;QProgressBar&#xff09; 今天来介绍PySide2进度条&#xff08;QProgressBar&#xff09;的使用&#xff0c;如下所示&#xff1a; 说明 进度条也是一个常用的控件&#xff0c;当程序需要做一件比较耗费时间的任…

java开发神器之ecplise的基本使用

java开发神器之ecplise的基本使用 一、ecplise的安装二、利用ecplise创建工作空间 一、ecplise的安装 免安装eclipse程序包 二、利用ecplise创建工作空间 1、准备好eclipse的程序包&#xff0c;右键执行程序。 2、若打开eclipse显示如下第一张图的界面提示&#xff0c;是因…