随笔 - 48  文章 - 0  评论 - 0  阅读 - 11731

Retrofit--网络请求框架

一、什么是Retrofit

Retrofit是Adnroid常用的一种网络请求框架,他是一个基于OkHttp网络请求的封装了网络请求接口的框架

二、Retrofit的基本使用

1.需要添加Retrofit和OkHttp的依赖
2.添加对应的网络请求权限
3.创建接受服务器返回数据的类(类文件)
4.创建用于描述的网络接口
5.创建Retrofit对象
6.创建网络请求接口的实例
7.发送网络请求
8.接收并处理返回数据

三、网络请求的一些方法以及参数设置

3.1 接口常见形式:

@Get

public interface XXXX {
    @GET("XXXX") Call<ResponseBody> getCall();
}
//XXX是url后面是根据前后端通信url具体定义的参数形式

@POST

public interface PostRequestGridPageTaskList {
    @Headers({"Content-Type: application/json","Accept: application/json"})
    @POST("XXXXX{id}")
    Call<ResponseBody> getCall(@Path("id") int id);
}
// {id} 表示是一个变量
// headers里的是一个具体的头形式

3.2 上传格式:

@FromUrlEncoded

每个键值对需要用@Filed来注解键名;

@Multipart

适用于有文件上传的场景,每个键值对需要用@Part来注解键名;

@Path

适用于url地址参数需要变化的场景

复制代码
 @POST("/form")
        @FormUrlEncoded
        Call<ResponseBody> XXX(@Field("name") String name, @Field("age") int age);

//

@POST("/form")
        @Multipart
        Call<ResponseBody> XXX(@Part("name") RequestBody name, @Part("age") RequestBody age, 
                                           @Part MultipartBody.Part file);

//

 @GET("users/{user}")
        Call<ResponseBody>  getBlog(@Path("user") String user );
        // 访问的API是:https://XXXX/user/{user}// 在发起请求时, {user} 会被替换为方法的第一个参数 user(被@Path注解作用)
    }
复制代码

四、Retrofit创建实例

复制代码
//创建retrofit对象
Retrofit retrofit = new Retrofit.Builder()
                .baseUrl("http://fanyi.youdao.com/") 
// 设置网络请求的Url地址
                .addConverterFactory(GsonConverterFactory.create()) 
// 设置数据解析器 一般用GJson
                .build();
//创建接口XXX的实例
XXX request = retrofit.create(XXX.class);
//对发送请求进行封装 XXX是接口中定义好的responseBody
Call<ResponseBody> call = request.XXX();
//发送网络请求(异步)
        call.enqueue(new Callback<Translation>() {
            //请求成功时回调
            @Override
            public void onResponse(Call<Translation> call, Response<Translation> response) {
                //处理返回的数据结果
                response.body().show();
            }

            //请求失败时回调
            @Override
            public void onFailure(Call<Translation> call, Throwable throwable) {
                System.out.println("连接失败");
            }
        });
    }
复制代码

 

posted on   suanningmeng98  阅读(155)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示