Retrofit2快速入门使用及文件上传(单上传、多上传)

本文介绍了Retrofit2在网络请求中的应用,包括导入依赖、创建接口、初始化实例、同步异步请求,特别讲解了文件上传的实现,适合Android开发者学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

作者:zkbilian

在开发项目中经常会遇到上传头像的问题,那我们如果使用Retrofit做网络请求时,如何进行使用,在文章的最后有最清晰的使用方法

Retrofit可以认为是Okhttp的 “升级版”,为什么这么说?那是因为其内部默认是基于OkHttp来进行封装的,它们属于同一家公司Square


介绍

这里写图片描述

常用的网络请求方法

@GET

 使用@Query单个参数   @QueryMap多个参数

@POST

使用@Field 单个参数   @FieldMap 多个参数   @Part 上传文件 @PartMap 上传多个文件

总体使用步骤:

1.添加Retrofit依赖库
2.创建接受服务器返回数据的类
3.创建用于描述网络请求的接口
4.创建Rerofit实例
5.创建网络请求接口实例
6.发送网络请求(异步和同步)
7.处理返回数据 
8.进阶理解从复杂到精简的过程
9.上传文件使用

使用

当你想要做任何网络请求的操作时,一定要提前首先加上网络权限,这是很多新手容易忘记的通病,以前我也老忘哈哈。。。。。

下面来看具体使用方法:

1.导入依赖包

    implementation 'com.squareup.retrofit2:retrofit:2.4.0'
    implementation 'com.google.code.gson:gson:2.2.4'
    compile 'com.squareup.retrofit2:converter-gson:2.0.2'

2.创建Bean类

http://v.juhe.cn/toutiao/index?key=d05b58fa6901ad9bed77a1ef08bd6ccb 为了方便给你们提供了一下url地址,仅供学习使用

用gson 快捷方式,生成一个数据类,这个大家都会把,如果不会的话百度搜gosn 插件即可

3.创建存放网络请求的接口

//{name}是一个替换块,搭配@Path("name")动态传参数 
public interface PostService{
   
   
  @GET("{name}/index?key=d05b58fa6901ad9bed77a1ef08bd6ccb")
  Call<Getbean> getString(@Path("name") String name);
}

4..创建并初始化Retrofit实例

       Retrofit retrofit = new Retrofit.Builder()
               .baseUrl("http://v.juhe.cn/")//设置网络请求的Url地址
               .addConverterFactory(GsonConverterFactory.create()) //设置数据解析器
               .build();

5.连接网络请求接口调用其方法

GetService service = retrofit.create(GetService.class);
Call<GetBean> call = service.getString3("toutiao");

6.同步和异步请求方式

//同步操作,必须开启子线程
     new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Response<GetBean> execute = call.execute();
                    GetBean bean = execute.body();
                    Message msg=hand.obtainMessage();
                    msg.obj=bean.toString();
                    msg.what=102;
                    hand.sendMessage(msg);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }).start();
//异步操作
  call.enqueue(new Callback<GetBean>() {
            @Override
            public void onResponse(Call<GetBean> call, Response<GetBean> response) {
                GetBean bean = response.body();
                Log.e("zhoukang", "" + bean.toString());
            }
            @Override
            public 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值