android网络框架Retrofit使用记录

Retrofit的GET请求:

情景:在新闻app中要获取某个用户收藏的文章信息。
这个请求我们使用的是get请求,用户的授权信息放到请求的Headers中;其他参数比如offset-偏移起始位置,limit - 返回最多结果数等参数都放在 LinkedHashMap集合中。

第一步:初始化retrofit对象

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(API_URL)// http://dev1.baidu.com:4000
            .addConverterFactory(ScalarsConverterFactory.create())
            .addConverterFactory(GsonConverterFactory.create())
            .build();

第二步:携带参数赋值

DataBean dataBean = AppUtils.getClassFromJson(...)
String headStr = dataBean.getToken_type() + " " + dataBean.getAccess_token();
LinkedHashMap<String, Integer> parms = new LinkedHashMap<>();
parms.put("offset", offset);
parms.put("limit", limit);
parms.put("simplemode", simplemode == true ? 1 : 0);

第三步:创建请求接口RequestCollectList

public interface RequestCollectList {
    @GET("/v1.0/user/favorite/list")
    Call<RspCollectList> contributors(@Header("Authorization") String authorization, @QueryMap Map<String, Integer> parms);
}

第四步:创建返回json数据的Bean类RspCollectList
1、利用Postman发送请求拿到返回json数据;
postman一款优秀的Chrome插件
2、复制json数据,通过GsonFormat插件自动生成Bean类;
这样就轻松生成了返回的JavaBean类。
第五步:发送请求

Call<RspCollectList> call = request.contributors(headStr, parms);
call.enqueue(new Callback() {
            @Override
            public void onResponse(Call call, Response response) {
                if (response.body() == null) {
                } else {
                response.body();// body节点中是返回的数据
                }
            }

            @Override
            public void onFailure(Call call, Throwable t) {
            }
        });

到此一个GET请求大致完毕了。

Retrofit的POST请求:

情景:在新闻app某个页面中要点击收藏按钮跟服务器交互实现收藏功能。
该请求事件我们使用POST请求,这个请求中要携带用户的授权信息放到请求的Headers中,通过post携带一个json字符串(字段1:content_type;字段2:content_id)到服务器。
第一步:retrofit对象生成与上面get请求获取方式一样;
第二步:通过postman获取返回数据并用GsonFormat生成JavaBean类RspSaveCollectArticle;
其中post请求携带字符串如下:

[{"content_type":0, "content_id":32889}]

postman标签选择如下
第三步:创建请求接口RequestSaveCollectArticle

public interface RequestSaveCollectArticle {
    @Headers("content-type:application/json")
    @POST("/v1.0/user/favorite/save")
    Call<RspSaveCollectArticle> contributors(@Header("Authorization") String authorization, @Body RequestBody jsonBody);
}

第四步:参数生成
用户授权信息同上;
被携带json数据创建如下

RspSaveCollectArticle.DataBean favorite = new RspSaveCollectArticle.DataBean();
favorite.setContent_type(content_type);
favorite.setContent_id(content_id);
RequestBody jsonRequestBody = RequestBody.create(MediaType.parse("application/json"), "[" + AppUtils.getJsonFromClass(favorite) + "]");

第五步:请求

Call<RspSaveCollectArticle> call = request.contributors(headStr, jsonRequestBody);
call.enqueue(new Callback() {
            @Override
            public void onResponse(Call call, Response response) {
                if (response.body() == null) {
                } else {
                response.body();// body节点中是返回的数据
                }
            }
            @Override
            public void onFailure(Call call, Throwable t) {
            }
        });

关于postman和GsonFormatter如何使用可以先查询网站,后续可能会写相关文章介绍。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值