Retrofit简单使用

1. 在 Gradle加入Retrofit库的依赖

dependencies {
    compile 'com.squareup.retrofit2:retrofit:2.0.2'
 // Retrofit库
  
compile 'com.squareup.retrofit2:converter-gson:2.0.2'

 }  2. 添加 网络权限

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>   
3.创建 接收服务器返回数据 的类

//写一个基类

[java]  view plain  copy
  1. public class BaseResponse<T> {  
  2.     public String msg;  
  3.     public String code;  
  4.     public T data;  
  5.   
  6. }  

//写一个普通类继承基类 属性根据接口自己定义

[java]  view plain  copy
  1. public class User extends BaseResponse {  
  2.     public String mobile;  
  3.     public String nickname;  
  4.     public String password;  
  5. }  
4.创建用于面熟网络请求的接口,声明各个逻辑的接口
[java]  view plain  copy
  1. public interface TestService {  
  2.     //get请求  
  3.     @GET()  
  4.     Call<UserInfo> getRetrofit(@Url String uri, @Query("uid") String id);  
  5.   
  6.     //get请求  
  7.     @GET()  
  8.     Call<BaseResponse<User>> get2Retrofit(@Url String uri, @QueryMap Map<String,String> map);  
  9.   
  10.     //post请求  
  11.     @POST  
  12.     @FormUrlEncoded  
  13.     Call<UserInfo> postRetrofit(@Url String uri, @Field("uid") String id);  
  14.   
  15.     //post请求  
  16.     @POST  
  17.     @FormUrlEncoded  
  18.     Call<UserInfo> post2Retrofit(@Url String uri, @FieldMap Map<String,String> map);  
  19. }  
//接口工具类
[java]  view plain  copy
  1. public class Constants {  
  2.     public static String  BASE_url="https://www.zhaoapi.cn/";  
  3.     //获取信息  
  4.     public static  String Huo_url="user/getUserInfo";  
  5.     //获取信息  
  6.     public static  String login_url="user/login";  
  7. }  
//实际应用
[java]  view plain  copy
  1. public class MainActivity extends AppCompatActivity {  
  2.   
  3.     private TestService testService;  
  4.   
  5.     @Override  
  6.     protected void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         setContentView(R.layout.activity_main);  
  9.         ButterKnife.bind(this);  
  10.         //创建retrofit对象  
  11.         Retrofit retrofit=new Retrofit.Builder()  
  12.                 .baseUrl(Constants.BASE_url)  
  13.                 //支持Gson解析,转换成JavaBean类  
  14.                 .addConverterFactory(GsonConverterFactory.create())  
  15.                 .build();  
  16.         //实现接口,通过动态代理实现接口  
  17.         testService = retrofit.create(TestService.class);  
  18.     }  
  19.   
  20.     @OnClick({R.id.g1,R.id.g2,R.id.p1,R.id.p2})  
  21.     public void btn(View v){  
  22.         switch (v.getId()){  
  23.             case R.id.g1:  
  24.   
  25.                 Call<UserInfo> ca = testService.getRetrofit(Constants.Huo_url,"71");  
  26.                 ca.enqueue(new Callback<UserInfo>() {  
  27.                     @Override  
  28.                     public void onResponse(Call<UserInfo> call, Response<UserInfo> response) {  
  29.                         //在主线程  
  30.                         UserInfo userInfo = response.body();  
  31.    Toast.makeText(MainActivity.this,userInfo.getDate().getNickname(),Toast.LENGTH_SHORT).show();  
  32.                     }  
  33.   
  34.                     @Override  
  35.                     public void onFailure(Call<UserInfo> call, Throwable t) {  
  36.   
  37.                     }  
  38.                 });  
  39.                 break;  
  40.             case R.id.g2:  
  41.                 Map<String,String> map1=new HashMap<>();  
  42.                 map1.put("mobile","15712885679");  
  43.                 map1.put("password","123456");  
  44.               Call<BaseResponse<User>> call2 = testService.get2Retrofit(Constants.login_url,map1);  
  45.                 call2.enqueue(new Callback<BaseResponse<User>>() {  
  46.                     @Override  
  47.     public void onResponse(Call<BaseResponse<User>> call, Response<BaseResponse<User>> response) {  
  48.                         BaseResponse<User> body = response.body();  
  49.                         //在主线程  
  50.            Toast.makeText(MainActivity.this,body.data.mobile+body.msg,Toast.LENGTH_SHORT).show();  
  51.                     }  
  52.   
  53.                     @Override  
  54.                     public void onFailure(Call<BaseResponse<User>> call, Throwable t) {  
  55.   
  56.                     }  
  57.                 });  
  58.                 break;  
  59.             case R.id.p1:  
  60.                 Call<UserInfo> call = testService.postRetrofit(Constants.Huo_url, "71");  
  61.                 call.enqueue(new Callback<UserInfo>() {  
  62.                     @Override  
  63.                     public void onResponse(Call<UserInfo> call, Response<UserInfo> response) {  
  64.                         //在主线程  
  65.                         UserInfo userInfo = response.body();  
  66.    Toast.makeText(MainActivity.this,userInfo.getDate().getNickname(),Toast.LENGTH_SHORT).show();  
  67.                     }  
  68.   
  69.                     @Override  
  70.                     public void onFailure(Call<UserInfo> call, Throwable t) {  
  71.   
  72.                     }  
  73.                 });  
  74.                 break;  
  75.             case R.id.p2:  
  76.                 Map<String,String> map=new HashMap<>();  
  77.                 map.put("mobile","15712885679");  
  78.                 map.put("password","123456");  
  79.                 Call<UserInfo> ca2 = testService.post2Retrofit(Constants.login_url, map);  
  80.                 ca2.enqueue(new Callback<UserInfo>() {  
  81.                     @Override  
  82.                     public void onResponse(Call<UserInfo> call, Response<UserInfo> response) {  
  83.                         //在主线程  
  84.                         UserInfo userInfo = response.body();  
  85.    Toast.makeText(MainActivity.this,userInfo.getMsg(),Toast.LENGTH_SHORT).show();  
  86.                     }  
  87.                     @Override  
  88.                     public void onFailure(Call<UserInfo> call, Throwable t) {  
  89.   
  90.                     }  
  91.                 });  
  92.                 break;  
  93.         }  
  94.     }  
  95. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值