Retrofit2.0初识

新了解的一个用户量大的接口型网络框架,名叫Retrofit,当前使用版本2.0,使用环境Android,开发工具:Android studio;
Retrofit github地址:Retrofit
第一步,将Retrofit引入到gradle,代码如下:

compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'//Retrofit2所需要的包
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'//ConverterFactory的Gson依赖包
compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'//ConverterFactory的String依赖包

第二步,编写接口类:

public interface RetrofitService{
    /**
    * 用户登录
    * 纯文字请求
    * Call接口回调得到的UserBean实体,在实现方法里进行其他操作
    * @param userName 传入用户名,Query括号里的是请求参数名
    * @param pass 传入密码, Query括号里的是请求密码参数名
    **/
    @POST("logo")
    Call<UserBean> userLogin(@Query("userName") String userName,
                             @Query("pass") String pass);

    /**
    * 提交更新个人头像
    * 图文混合提交
    * Call回调得到自定义的结果实体类,
    * @param map 参数集
    **/
    @Multipart
    @POST("upload_img")
    Call<ResultBean> updateMyLogo(@PartMap Map<String ,RequestBody> map);

}

第三步,实现接口类:

public class HttpUtil{

    /**
    * 设置网络参数,得到接口类
    **/
    private static RetrofitService getService(){
        Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(请求一级路径,如:http://www.baidu.com/)
                //增加返回值为String的支持
                .addConverterFactory(ScalarsConverterFactory.create())
                //增加返回值为Gson的支持(以实体类返回)
                .addConverterFactory(GsonConverterFactory.create())
                .build();
        return retrofit.create(RetrofitService.class);
    }

    /**
     * 将文字参数值转为RequestBody
     **/
    public static RequestBody toRequestBody(String value){
        RequestBody requestBody = RequestBody.create(MediaType.parse("text/pain"), value);
        return requestBody;
    }

    /**
    * 用户登录
    * @param userName 用户名
    * @param password 密码
    **/
    public static void userLogin(String userName, String password){
        Call<UserBean> call = getService().userLogin(userName, password);
        call.enqueue(new Callback<UserBean>() {
            @Override
            public void onResponse(Call<UserBean> call, Response<UserBean> response) {
                //TODO:处理数据
                //response.body()的结果是UserBean实体
            }

            @Override
            public void onFailure(Call<UserBean> call, Throwable t) {
                //TODO:请求失败
            }
        });
    }

    /**
    * 更新个人头像
    * @param userName 用户名
    * @param logo 头像图片文件
    **/
    public static void updateMyLogo(String userName, File logo){

        RequestBody logoBody = RequestBody.create(MediaType.parse("image/png"), logo);
        Map<String, RequestBody> map = new HashMap<>();
        map.put("userName", toRequestBody(userName));
        map.put("logo\";+filename=\""+logo.getName(), logoBody);
        Call<ResultBean> call = getService().updateMyLogo(map);
        call.enqueue(new Callback<ResultBean>() {
            @Override
            public void onResponse(Call<ResultBean> call, Response<ResultBean> response) {
                //TODO:处理数据
                //response.body()的结果是ResultBean实体
            }

            @Override
            public void onFailure(Call<ResultBean> call, Throwable t) {
                //TODO:请求失败
            }
        });
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值