美文网首页Retrofit学习笔记
Retrofit学习笔记(一)

Retrofit学习笔记(一)

作者: 梦半觉 | 来源:发表于2017-03-04 14:17 被阅读137次

Retrofit 2.0

Retrofit是SQUARE美国一家移动支付公司最近新发布的在Android平台上http访问的开源项目

一、Retrofit是什么

github官方描述:A type-safe HTTP client for Android and Java
直译一下:一款为Android和Java提供的类型-安全的HTTP客户端。
总的来说,它是用来封装网络请求的。
它采用接口注释的方式来调用网络请求,不用写实现层(已封装好)。

二、Retrofit怎么使用

1.添加依赖

    //Retrofit Type-safe HTTP client for Android and Java
    compile 'com.squareup.retrofit2:retrofit:2.2.0'
    //转换器
    compile 'com.squareup.retrofit2:converter-gson:2.2.0'
    compile 'com.squareup.retrofit2:converter-jackson:2.2.0'
下面两个依赖是Json和Java对象之间的转化器 你可以不添加

用基础的HttpURLConnection自己写过网络请求的同学肯定被这样的问题困扰:需要自己解析Json(实现Json和对象之间的转化),而Retrofit支持各种Json转化器:

  • Gson: com.squareup.retrofit2:converter-gson
  • Jackson: com.squareup.retrofit2:converter-jackson
  • Moshi: com.squareup.retrofit2:converter-moshi
  • Protobuf: com.squareup.retrofit2:converter-protobuf
  • Wire: com.squareup.retrofit2:converter-wire
  • Simple XML: com.squareup.retrofit2:converter-simplexml
  • Scalars (primitives, boxed, and String): com.squareup.retrofit2:converter-scalars

2.初始化

Retrofit retrofit = new Retrofit.Builder()
               .baseUrl("XXX你的访问URLXXX")
               .addConverterFactory(GsonConverterFactory.create())
               .build();

3.编写API

假设我要用userDevice 和 schoolId 去查询年级名和Id

public interface APIManager {

    @POST("XXX/XXX你的访问具体接口的路径XXX")
    Call<AjaxMsg> getGradeNameAndId(@Query("userDevice") String userDevice, @Query("schoolId") Integer schoolId);
}

其中AjaxMsg是和接口返回数据对应的对象

@Query("name")来设定body的parameters(参数)

  • 如果想用表单 @FieldMap
@FormUrlEncoded
@POST("/url")
 Call<T> postForm(
     @FieldMap Map<String , Object> maps);
  • 如果直接用对象 @Body
@POST("url")
 Call<T> PostBody(
      @Body Objects objects);
  • 如果直接多参数 @QueryMap
@PUT("/url")
Call<T> queryMap(
      @QueryMap Map<String, String> maps);
  • 如果上传文件 @Part
@Multipart
@POST("/url")
Call<ResponseBody> uploadFlie(
      @Part("description") RequestBody description,
      @Part("files") MultipartBody.Part file);
  • 如果多文件上传 @PartMap()
@Multipart
@POST("{url}")
Call<T> uploadFiles(
      @Path("url") String url,
      @PartMap() Map<String, RequestBody> maps);

4.调用API

Call<AjaxMsg> call = apiService.getGradeNameAndId("inf",1);
        call.enqueue(new Callback<AjaxMsg>() {
            @Override
            public void onResponse(Call<AjaxMsg> call, Response<AjaxMsg> response) {
                if(response.isSuccessful()){
                    Log.d("httpResult","isSuccessful");
                    AjaxMsg grade = response.body();
                    Log.d("httpResult",grade.getGradeName());
                }
                else{
                    Log.d("httpResult","isNotSuccessful");
                }
            }

            @Override
            public void onFailure(Call<AjaxMsg> call, Throwable t) {

            }
        });

Retrofit内部用了Json转换器自动将Json转换为Java对象
response.body()返回的就是这个对象

相关文章

  • Retrofit入门笔记

    Retrofit 是 square 的一个网络请求框架,本文记录Retrofit的学习笔记 Retrofit请求框...

  • Retrofit学习笔记

    Retrofit学习笔记 一、什么是Retrofit框架 Retrofit框架是Square公司出品的目前非常流行...

  • Retrofit学习笔记(一)

    Retrofit 2.0 Retrofit是SQUARE美国一家移动支付公司最近新发布的在Android平台上ht...

  • Retrofit学习笔记(一)

    Retrofit 是什么项目地址: https://github.com/square/retrofit官方介绍:...

  • Retrofit 学习笔记

    参考: 网络加载框架 - Retrofit 这是一份很详细的 Retrofit 2.0 使用教程(含实例讲解) A...

  • retrofit 学习笔记

    ps: 我写这篇这是很晚了,也是怪我自己啊,一直以来拖拖拉拉的就是改不了,retrofit 看着好几次了,看完有些...

  • Retrofit学习笔记

    一、Retrofit简介 Retrofit是Square公司开发的一款针对Android网络请求的框架,Retro...

  • 学习Retrofit笔记

    本文是基于Retrofit2进行学习。首先你要知道Retrofit是一个网络请求框架,它的api 定义可以查阅官网...

  • Retrofit学习笔记

    注:以下内容为本人自己做(chao)的学习笔记,可能含有少儿不宜的误导性内容,学习Retrofit请看参考文章。。...

  • Retrofit 学习笔记

    前言 Retrofit是个极其优秀的库,特别是和rxjava结合起来,使用起来那是一个丝滑般爽。不过使用了一两年,...

网友评论

    本文标题:Retrofit学习笔记(一)

    本文链接:https://www.haomeiwen.com/subject/rutjgttx.html