对Retrofit的初步使用

最近学习了Retrofit的基本用法,下面跟大家分享一下自己的总结

1.在app中的build.gradle添加依赖

compile'com.squareup.retrofit2:retrofit:2.2.0'

Json解析库

compile'com.squareup.retrofit2:converter-gson:2.0.0-beta3'

2.创建接口:

public interface Api{}

GET请求:

@PathQuery

@GET("user")CallgetUserInfoWithQuery(@Query("more") String more);

@Path

@GET("user/{id}")CallgetUserWithPath(@Path("id")inti);

两者的区别为:

@Query是直接把参数拼接在url后面,如:url?more=more

@Path是把传进来的参数直接填进去,注意要相同的字段

POST请求:

Json格式:

先建立Bean:UserParam类

接下来创建方法:

@POST("login/json")CallloginWithJson(@BodyUserParam param);

Form表单格式

@FormUrlEncodedCallloginWithForm(@Field("name")String name,@Field("psw")String psw);

@Headers({"User-Agent :"," asendi you:pengge"})//添加头信息:字符串数组

@POST("form")

其中Headers()是添加请求头信息,外字符串数组

3.创建Retrofit对象

Retrofitretrofit =newRetrofit.Builder() 

.baseUrl("要访问的url")

.addConverterFactory(GsonConverterFactory.create()) 

.build();

其中加上addConverterFactory(GsonConverterFactory.creat())是在回调时能够使用自己定义的类型

接下来创建Api对象

Api api= retrofit.create(Api.class);

使用getUserWithPath方法

api.getUserWithPath.enqueue(newCallback() {

@Override

         public voidonResponse(Call call,Response response) {

              User user=response.body();

            Log.i(TAG,"onResponse: "+user.getUser_name());

 }

@Override

public voidonFailure(Call call,Throwable t) {    }

});

使用loginWithJson方法(假设在登录时先获取用户的id,然后再获取用户的信息)

api.loginWithJson(newUserParam("asendi","123")).enqueue(newCallback() {

     @Override

      public voidonResponse(Call call,Response response) {

                     if(response.isSuccessful()) {

                                  int  id =  response.body().getUser_id();

                api.getUserInfoWithPath(id).enqueue(newCallback() {//获取用户的信息                                                    @Override

                         public void  onResponse(Call call,Response response) {                                                                                User user = response.body();

                                   Log.i("User","onResponse: "+ user.getUser_name() +":"+ user.getPsw());

     }

                      @Override

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

            });

}    

}

@Override

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

});

使用Form表单方式则是直接传入对应的参数即可。

你可能感兴趣的:(对Retrofit的初步使用)