android 介绍Retrofit的简单使用

转载 2016年08月29日 14:06:54

Retrofit与okhttp共同出自于Square公司,retrofit就是对okhttp做了一层封装。把网络请求都交给给了Okhttp,我们只需要通过简单的配置就能使用retrofit来进行网络请求了,其主要作者是Android大神JakeWharton


导包:

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依赖包
*这里需要值得注意的是导入的retrofit2包的版本必须要一致,否则就会报错。


首先定义我们请求的Api,我们假设是这样的

http://106.3.227.33/pulamsi/mobileLogin/submit.html
与Okhttp不同的是,Retrofit需要定义一个接口,用来返回我们的Call对象,这里示范的是Post请求:

public interface RequestServes {
    @POST("mobileLogin/submit.html")
    Call<String> getString(@Query("loginname") String loginname,
                           @Query("nloginpwd") String nloginpwd);
}


Retrofit提供的请求方式注解有@GET@POST,参数注解有@PATH@Query等,我们只介绍常用的;前两个顾名思义就是定义你的请求方式Get or Post,后面的@PATH指的是通过参数填充完整的路径,一般用法:

@GET("{name}")
Call<User>getUser(@Path("name") String name);

这里的参数username会被填充至{name}中,形成完整的Url请求地址,{name}相当于一个占位符;

@Query就是我们的请求的键值对的设置,我们构建Call对象的时候会传入此参数,

1
2
3
@POST("mobileLogin/submit.html")
   	Call<String> getString(@Query("loginname") String loginname,
                          @Query("nloginpwd") String nloginpwd);
这里@Query("loginname")就是键,后面的loginname就是具体的值了,值得注意的是Get和Post请求,都是这样填充参数的;


接口写完了之后我们需要来定义Retrofit对象来进行请求了;

创建一个Retrofit 对象

Retrofit retrofit = new Retrofit.Builder()
               .baseUrl("http://106.3.227.33/pulamsi/")
               //增加返回值为String的支持
               .addConverterFactory(ScalarsConverterFactory.create())
               //增加返回值为Gson的支持(以实体类返回)
               .addConverterFactory(GsonConverterFactory.create())
               //增加返回值为Oservable<T>的支持
               .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
               .build();

这里的baseUrl加上之前@POST("mobileLogin/submit.html")定义的参数形成完整的请求地址;

addConverterFactory(ScalarsConverterFactory.create())的意思是构建了一个返回支持,如果你的Call对象的泛型接收另外的格式需要添加另外的支持,上述代码已经列出;

接下来我们用这个Retrofit对象创建一个RequestSerives接口对象,也就是我们之前定义的那个接口,并且得到我们的Call对象;


RequestSerives requestSerives = retrofit.create(RequestSerives.class);//这里采用的是Java的动态代理模式
Call<String> call = requestSerives.getString("userName", "1234");//传入我们请求的键值对的值
利用得到的Call对象,然后我们就发出网络请求了:

call.enqueue(new Callback<String>() {
    @Override
    public void onResponse(Call<String> call, Response<String> response) {
        Log.e("===","return:"response.body().toString());
    }

    @Override
    public void onFailure(Call<String> call, Throwable t) {
        Log.e("===","失败");
    }
});

Android 网络请求库Retrofit简单使用

载请标明出处: http://blog.csdn.net/u011974987/article/details/50895633; 什么是 Retrofit ?Retrofit 是一套 RESTfu...
  • u011974987
  • u011974987
  • 2016年03月15日 13:19
  • 5920

Retrofit2简单实例

Retrofit2简单实例
  • guchuanhang
  • guchuanhang
  • 2016年12月09日 18:52
  • 1684

android 介绍Retrofit的简单使用

android 介绍Retrofit的简单使用
  • bitian123
  • bitian123
  • 2016年07月13日 17:18
  • 111331

retrofit的简单使用介绍

主方法 public class MainActivity extends AppCompatActivity implements View.OnClickListener {     priv...
  • qq_40782129
  • qq_40782129
  • 2017年11月30日 19:47
  • 87

Retrofit的简单使用(入门篇)-GET请求

关于android的网络请求,使用过不少 有HttpURLConnection,volley,xUtil3,OkHttp等,而大多数数时候,从网络请求拿到数据之后,一般是json数据,都还需要解析,个...
  • qq_23077365
  • qq_23077365
  • 2016年08月09日 17:10
  • 5856

RetrofitUtils使用

RetrofitUtils
  • mwq384807683
  • mwq384807683
  • 2016年12月13日 17:41
  • 1160

优雅的使用MVP+RxJava+Retrofit框架

前面我已经写过一篇关于Google的RxJava版MVP解读的文章,本篇就是我在此基础上进行了修改和封装,稍微变化一下,见上图。目的是让这个框架更加实用,同时简化操作,少写代码。果然程序员都是喜欢偷懒...
  • u011622280
  • u011622280
  • 2017年01月12日 17:20
  • 2164

android Retrofit的简单使用

Retrofit与okhttp共同出自于Square公司,retrofit就是对okhttp做了一层封装。把网络请求都交给给了Okhttp,我们只需要通过简单的配置就能使用retrofit来进行网络请...
  • wzgbgz
  • wzgbgz
  • 2017年08月15日 21:53
  • 75

Retrofit介绍

前言Retrofit是Square开发的一个用于网络请求的开源库,内部封装了okhttp,并且和RxAndroid完美的兼容,使得Android的开发效率增加不少的同时也使代码变得清晰易读。Gradl...
  • cfp6523052
  • cfp6523052
  • 2016年05月25日 11:21
  • 967

【Android】Retrofit网络请求Service,@Path、@Query、@QueryMap...

(转载)http://www.jianshu.com/p/7687365aa946 对Retrofit已经使用了一点时间了,是时候归纳一下各种网络请求的service了。 下面分为GET、PO...
  • zhuhai__yizhi
  • zhuhai__yizhi
  • 2016年08月08日 15:16
  • 775
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android 介绍Retrofit的简单使用
举报原因:
原因补充:

(最多只允许输入30个字)