Retrofit使用

举报
chnliyc 发表于 2019/01/29 16:25:54 2019/01/29
【摘要】 Retrofit使用导包compile 'com.squareup.retrofit2:retrofit:2.1.0' //Retrofit2所需要的包compile 'com.squareup.retrofit2:converter-gson:2.1.0' //ConverterFactory的Gson依赖包,也可指定其他解析方式compile 'com.squareup.retrofit...

Retrofit使用

导包

compile 'com.squareup.retrofit2:retrofit:2.1.0' //Retrofit2所需要的包
compile 'com.squareup.retrofit2:converter-gson:2.1.0' //ConverterFactory的Gson依赖包,也可指定其他解析方式
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0' //结合使用的rxjava的依赖包

rxjava的依赖包
compile 'io.reactivex:rxandroid:1.2.0'
compile 'io.reactivex:rxjava:1.1.5'
okHttp的依赖包
compile 'com.squareup.okhttp3:okhttp:3.7.0'
Gson的依赖包
compile 'com.google.code.gson:gson:2.2.4'

参数注解

  • @GET(): 注解在方法上,表示get请求,括号内为请求url

  • @POST(): 注解在方法上,表示Post请求,括号内为请求url

  • @PUT(): Put请求

  • @DELETE(): Delete请求

  • @Query(): get请求时,注解在方法中,注解后括号中是键,跟在后面的是值,将会以key=value的方式拼接在url后面

  • @QueryMap:get请求时,如果参数很多,可以将参数集成到map集合,用此注解在方法中传递

  • @Field(): Post请求时,注解在方法中,注解后括号中是键,跟在后面的是值,将每一个请求参数都存放至请求体中

  • @FieldMap:Post请求时,如果参数很多,可以将参数集成到map集合,用此注解在方法中传递

  • @Body:若Post请求参数有多个,可统一封装到一个类中,用此注解在方法中传递

  • @Path(): 注解在方法中,注解后括号中的是url上的占位符,跟在后面的是填充到url占位符上的字符串

  • @FormUrlEncoded():用于Post请求,将会自动将请求参数的类型调整为application/x-www-form-urlencoded

  • @Multipart(): 用于Post请求,上传

  • @Part(): 用于Post请求,注解在上传的方法中,上传的参数

  • @Headers(): 添加许多请求头,括号内为请求头内容

  • @Header(): 添加一个请求头,有重名的将会覆盖

基本使用

  1. 创建请求方法

     public interface RequestService {
           @GET("users/{user}/repos")
           Observable<RequestResult> getDatas(@Path("user") String user, @Query("key") String value);
     }
  2. 创建Retrofit实例

     Retrofit retrofit = new Retrofit.Builder()
             .baseUrl("") //网络请求URL相对固定的地址
             .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) //与rxjava联合使用
             .addConverterFactory(GsonConverterFactory.create()) //gson解析返回值
             .client(okHttpClient()) //使用OkHttp请求
             .build();
    
     OkHttpClient okHttpClient = new OkHttpClient.Builder()
                 .connectTimeout(5, TimeUnit.SECONDS)
                 .readTimeout(5, TimeUnit.SECONDS)
                 .writeTimeout(5, TimeUnit.SECONDS)
                 .build();
  3. 创建请求Api

       RequestService requestService = retrofit.create(RequestService.class);
  4. 发起请求

     Observable<RequestResult> observable = requestService.getDatas(user,value);
     observable.subscribe(Subscriber)......
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。