首页 > 其他分享 >【android】Android 网络框架--Retrofit

【android】Android 网络框架--Retrofit

时间:2023-02-03 15:23:57浏览次数:49  
标签:请求 -- Retrofit compile Part Android com android String

1、导入Jar包

  compile 'com.google.code.gson:gson:2.8.0'

  compile 'com.squareup.retrofit2:retrofit:2.1.0'

  compile 'com.squareup.okhttp3:okhttp:3.4.2'

  compile 'com.squareup.retrofit2:converter-gson:2.1.0'

  compile 'com.squareup.retrofit2:converter-scalars:2.1.0'


2、创建Retrofit对象

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl("请求基地址/")
            //可以接收自定义的Gson
            //Retrofit会使用Gson将ResponseBody
            .addConverterFactory(GsonConverterFactory.create())
            .build();

Retrofit retrofit = new Retrofit.Builder()
      .baseUrl(ServerInterface.BASE_URL)
      .addConverterFactory(ScalarsConverterFactory.create())//解析成字符串
      .build();

3、定义请求接口

public interface IRegister {
    @POST("接口路径")
@FormUrlEncoded //键值对
  Call<请求原型RegisterBean> register(@Field("请求参数Key user.name") String username, @Field("user.passWord") String password);

}
public interface IUpdate {
//完善资料,需要上传用户头像
@POST(ServerInterface.USER_UPDATE)
@Multipart //表单数据
//文件上传,文件不带Part()
Call<String> userUpdate(@Part MultipartBody.Part doc,
@Part("user.id")String userId,
@Part("user.userName")String nickName,
@Part("user.sex")String sex,
@Part("user.myInfo")String info);
}

4、创建请求对象
IRegiter service = retrofit.create(IRegister.class)
Call<RegisterBean> call = service.register(username, password);
 
文件上传
File file = new File(path文件地址);
//将文件写入body请求内容体
//HTTP contentType 对照表
RequestBody body = RequestBody.create(MediaType.parse("image/jpg"),file);
//使用内容体去创建一个表单对象 image/*表示所有图片
MultipartBody.Part doc = MultipartBody.Part.createFormData("doc",file.getName(),body);
Call<String> call = retrofit.create(IUpdate.class).userUpdate(doc, userId, nickName, sex, myInfo);

5、执行
使用okHttp的的执行流程、

同步 堵塞线程

Response<RegisterBean> execute = call.execute();

异步

call.enqueue(new Callback<RegisterBean>(){回调};

取消

call.cancel();

Retrofit注解

Retrofit 共22个注解

1.HTTP请求方法
方法注解同Http请求模式 GET,POST,PUT,DELETE,PATCH,HEAD,OPTIONS,
可用HTTP来代替上面七个方法,HTTP有三个属性method ,path ,hasBody 。

2.Http请求类型
FormUrlEncoded Http默认请求方式,键值对。application/x-www-from-urlencoded
Multipart 带文件上传 from-data
Streaming 流类型返回

3.请求参数
Headers 添加请求头
Header 添加不固定值的Header
Field   Post普通键值对
FiledMap   Post普通键值对

Part Post文件上传
PartMap Post多文件上传


Query Get请求
QueryMap Get请求
Url
用于URL

 

Retrofit转换

GsonConverterFactory
当使用该转换器时,自动将返回json转换成Bean对象,但如果需要获取字符串会出错,需要使用下面转换器

ScalarsConverterFactory

官方提供的字符串转换工具

    compile 'com.squareup.retrofit2:converter-scalars:2.0.0'

标签:请求,--,Retrofit,compile,Part,Android,com,android,String
From: https://www.cnblogs.com/opensmarty/p/17089377.html

相关文章

  • 缩点学习笔记
    假如题目名称不是“【模板】缩点”的话,是否能想到缩点?这道题如何联想到缩点?首先题目给出的图,可能存在强连通分量,这样的强连通分量中,所有的点权都可全部取到,所以如果走到......
  • Verilog实现序列产生器(状态转移形,移位形,计数形)
    Verilog实现序列产生器是Verilog基础学习甚至求职面试时的一个常见问题,它用到计数器、状态机、移位寄存器等一系列知识。因此有必要进行学习与仿真:一、思路   状态转......
  • 控制台调用“格式工厂”和ffmpeg进行格式转换
    格式工厂官方主页-免费多功能的多媒体文件转换工具(pcfreetime.com) 格式工厂软件能很方便地对多媒体格式进行转换,但只支持图形操作,如果想控制台批量自动操作就不知......
  • Oracle 死锁 解锁处理
    查看死锁selectobject_name,machine,s.sid,s.serial#fromv$locked_objectl,dba_objectso,v$sessionswherel.object_id=o.object_idandl.session_id=s.sid;......
  • 本地通知UserNotifications的简单使用
    有三个概念要区分下:(1)通知中心:这个是语法中的设计模式,一对多的广播通知,代码中订阅了该通知的监听者可以接受此通知进行处理(2)远程通知:也可以说是APNs通知,极光推送等,一般指......
  • 小白科普丨何为树、二叉树和森林?
    摘要:本文为大家带来树、二叉树和森林的表示及如何进行相互转换。本文分享自华为云社区《树、二叉树和森林的表示及相互转换》,作者:1+1=王。树的基本概念树的定义:树是n(n......
  • 【RUST程序设计语言】第八章 常见集合练习题 Pig Latin
    题目摘录:给定一系列数字,使用vector并返回这个列表的中位数(排列数组后位于中间的值)和众数(mode,出现次数最多的值;这里哈希map会很有帮助)。将字符串转换为PigLatin,也......
  • 反序列化类校验部分源码解析、断言、drf之请求、drf之响应、视图组件介绍及两个视图基
    目录1反序列化类校验部分源码解析2断言3drf之请求3.1Request能够解析的前端传入的编码格式3.2Request类有哪些属性和方法(学过)4drf之响应4.1Response能够响应的编......
  • 记录使用pymysql的坑
    python使用pyMysql写入数据时pymysql的写入的sql语句中,使用占位符%s写入数据,没有%d, %f这样的说法无论在数据库表的对应字段是否为字符串类型如果把占位符改为数据表......
  • ZYNQ与DSP之间SRIO通信例程,实操分享
    XQ6657Z35/45-EVM高速数据处理评估板(XQTyer评估板)由广州星嵌电子科技有限公司自主研发,核心板包含一片TIDSPTMS320C6657和一片XilinxZYNQ-7000SoC处理器XC7Z035-2FFG67......