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")
    @FormUrlEncoded
    Call<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);//创建接口类对象,并且设置为全局变量。

    @Test
    public 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")
    @FormUrlEncoded
    Call<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);//创建接口类对象,并且设置为全局变量。

    @Test
    public 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格式转换测试结果展示

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

12、pytest上下文友好的输出

官方实例 # content of test_assert2.py import pytestdef test_set_comparison():set1 set("1308")set2 set("8035")assert set1 set2def test_dict_comparison():dict_1 {name:陈畅,sex:男}dict_2 {name:赵宁,sex:女}assert dict_1 dict_2def tes…

神经网络常用归一化和正则化方法解析(一)

&#x1f380;个人主页&#xff1a; https://zhangxiaoshu.blog.csdn.net &#x1f4e2;欢迎大家&#xff1a;关注&#x1f50d;点赞&#x1f44d;评论&#x1f4dd;收藏⭐️&#xff0c;如有错误敬请指正! &#x1f495;未来很长&#xff0c;值得我们全力奔赴更美好的生活&…

代理IP和网络加速器的区别有哪些

随着互联网的普及&#xff0c;越来越多的人开始使用网络加速器来提高网络速度。然而&#xff0c;很多人并不清楚代理IP和网络加速器之间的区别。本文将详细介绍两者的概念及区别。 一、代理IP 代理IP是一种通过代理服务器进行网络连接的方式。在使用流冠代理IP时&#xff0c;用…

伴随高性能多级网关和多级分布式缓存架构应用实战经验

随着互联网业务的快速发展&#xff0c;对于高性能网络架构的需求越来越迫切。在这篇文章中&#xff0c;我们将介绍高性能多级网关和多级分布式缓存架构在实际应用中的经验&#xff0c;并提供相关示例代码。 一、高性能多级网关的设计与实现 高性能多级网关是一个重要的网络架构…

软件外包公司的核心竞争力

软件外包公司的核心竞争力可以涵盖多个方面&#xff0c;这取决于公司的战略、专业领域和市场定位。以下是一些可能构成软件外包公司核心竞争力的因素&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1…

js中hasOwnProperty() 方法详解

hasOwnProperty 会返回一个布尔值,判断对象中是否存在该属性,不是继承属性,和原型链上的属性,是对象自身的属性,有返回true,没有返回false hasOwnProperty() 方法是 Object 的原型方法&#xff08;也称实例方法&#xff09;&#xff0c;它定义在 Object.prototype 对象之上&am…

动能资讯 | 智慧汽车—城市NOA迎爆发

在特斯拉引领的 TransformerBev 架构驱动下&#xff0c;智驾算法趋近于端到端的智驾大模型&#xff0c;使得智能驾驶开始步入城市 NOA 新时代。 消费者认知增强&#xff0c;未来市场空间广阔。伴随城市 NOA 在 23-24 年的落地和普及、L3 法规在年内的落地&#xff0c;行业 0-1…

众里寻她千百度:使用Excalidraw一句话绘制进销存系统采购入库流程

引言&#xff1a; 本文将介绍如何使用Excalidraw这一在线绘图工具来绘制进销存系统中的采购入库流程&#xff0c;帮助您更好地理解和优化采购流程。 正文&#xff1a; 1. 打开Excalidraw网站&#xff1a; 在浏览器中输入"https://excalidraw.com"&#xff0c;打开Ex…

聚观早报 |真我GT5 Pro细节曝光;iQOO Neo9系列参数曝光

【聚观365】12月5日消息 真我GT5 Pro细节曝光 iQOO Neo9系列参数曝光 抖音商城双12好物节 蔚来正式获得独立造车资质 三星Galaxy S24 Ultra手写笔获认证 真我GT5 Pro细节曝光 今年的顶级旗舰大比拼也进入最后的高潮&#xff0c;剩余还未亮相的骁龙8 Gen3旗舰新机目前也基…

个体诊所电子处方系统哪个好用,推荐一款可以自由设置配方模板能够填写病历可以查询历史病历的门诊处方笺软件

一、前言 1、功能实用&#xff0c;操作简单&#xff0c;不会电脑也会操作&#xff0c;软件免安装&#xff0c;已内置数据库。 2、中医西医均可用此软件开电子处方&#xff0c;支持病历记录查询&#xff0c;药品进出库管理&#xff0c;支持配方模板一键导入电子处方。 二、电子…

Java 基础学习(五)面向对象编程-对象和类

1 类和对象 1.1 面向对象概述 1.1.1面向对象简史 面向对象编程思想最初的起源可以追溯到1960年的Simula语言&#xff0c;这被认为是第一个支持面向对象编程概念的语言。Simula引入了类、对象、继承等概念&#xff0c;将数据和操作进行封装。Simula的创始人奥利-约翰达尔&…

【数电笔记】09-逻辑代数的基本定律、常用公式

目录 说明&#xff1a; 逻辑代数的基本定律 1. 常量间的运算 2. 逻辑变量与常量的运算 3. 与普通代数相似的定律 4. 摩根定律&#xff08;反演律&#xff09; 5. 等式证明方法例题 逻辑代数的常用公式 1. 吸收律 2. 冗余律 3. 示例应用 4. 关于异或运算的一些公式 …

uniapp得app云打包问题

获取appid&#xff0c;具体可以查看详情 也可以配置图标&#xff0c;获取直接生成即可 发行 打包配置 自有证书测试使用时候不需要使用 编译打包 最后找到安装包apk安装到手机 打包前&#xff0c;图片命名使用要非中文&#xff0c;否则无法打包成功会报错

聊聊 Jetpack Compose 原理 -- Compose 是如何将数据转换成 UI 的?

Compose 是一个声明式的 UI 框架&#xff0c;提供了很多开箱即用的组件&#xff0c;比如 Text()、Button、Image() 等等&#xff0c;Compose 会经过几个不同的阶段&#xff0c;最终渲染出 UI 界面。 此转换过程分为【三个阶段】&#xff1a; 组合&#xff1a; 显示什么布局&a…

Dynamics 365 关闭新特性“试用新外观“

微软总是喜欢悄默默上线一些新功能&#xff0c;比如之前的高级设置直接跳转Power apps的管理后台&#xff0c;被骂了一周改回来了。 这次又搞了个试用新外观&#xff0c;但一般这种都是有关闭的地方的&#xff0c;去Power Platform中的环境设置中找了半天没找到。 最终在应用的…

缓冲区溢出及原理

缓冲区缓冲区溢出缓冲区溢出的 C 程序实例缓冲区溢出错误的危害Linux IA32 的进程映像缓冲区溢出的原理 缓冲区 缓冲区是一块用于存取数据的 内存&#xff0c;其位置和长度&#xff08;大小&#xff09;在编译时确定 或 在程序运行时动态分配。 缓冲区通常用于存储临时数据&am…

智能优化算法应用:基于吉萨金字塔建造算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于吉萨金字塔建造算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于吉萨金字塔建造算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.吉萨金字塔建造算法4.实验参数设…

新手小白-没有弱口令的挖掘思路

没有弱口令怎么挖&#xff1f;依稀记得有一个很老的思路叫做禁用js可以跳转后台&#xff0c;奈何学习两年半到现在从未发现一个这种漏洞。 不过&#xff0c;虽然不能直接搞到未授权后台登录&#xff0c;但是站有站的设计&#xff0c;小白有小白的打法&#xff01; 访问某URL ip…

Nuxt3 使用 pinia 基础

官方文档 一、安装 pnpm add pinia/nuxt二、配置 添加到 nuxt.config.js 中的 modules &#xff08;Nuxt 3&#xff09;或 buildModules &#xff08;Nuxt 2&#xff09;&#xff1a; // Nuxt 2 export default {buildModules: [[pinia/nuxt, { disableVuex: true }]], } /…

【单片机】MCU内存管理

keil中查看内存使用情况 Code-Data,RO-Data,RW-Data,ZI-Data的含义 Code-Data&#xff1a;代码占用的flash大小 RO-Data&#xff1a;[read-only data],只读常量大小&#xff08;const和#define&#xff09; RW-Data&#xff1a;[read write data],初始化了的变量大小 ZI-Da…