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.创建 接收服务器返回数据 的类
//写一个基类
- public class BaseResponse<T> {
- public String msg;
- public String code;
- public T data;
- }
//写一个普通类继承基类 属性根据接口自己定义
- public class User extends BaseResponse {
- public String mobile;
- public String nickname;
- public String password;
- }
- public interface TestService {
- //get请求
- @GET()
- Call<UserInfo> getRetrofit(@Url String uri, @Query("uid") String id);
- //get请求
- @GET()
- Call<BaseResponse<User>> get2Retrofit(@Url String uri, @QueryMap Map<String,String> map);
- //post请求
- @POST
- @FormUrlEncoded
- Call<UserInfo> postRetrofit(@Url String uri, @Field("uid") String id);
- //post请求
- @POST
- @FormUrlEncoded
- Call<UserInfo> post2Retrofit(@Url String uri, @FieldMap Map<String,String> map);
- }
- public class Constants {
- public static String BASE_url="https://www.zhaoapi.cn/";
- //获取信息
- public static String Huo_url="user/getUserInfo";
- //获取信息
- public static String login_url="user/login";
- }
- public class MainActivity extends AppCompatActivity {
- private TestService testService;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- ButterKnife.bind(this);
- //创建retrofit对象
- Retrofit retrofit=new Retrofit.Builder()
- .baseUrl(Constants.BASE_url)
- //支持Gson解析,转换成JavaBean类
- .addConverterFactory(GsonConverterFactory.create())
- .build();
- //实现接口,通过动态代理实现接口
- testService = retrofit.create(TestService.class);
- }
- @OnClick({R.id.g1,R.id.g2,R.id.p1,R.id.p2})
- public void btn(View v){
- switch (v.getId()){
- case R.id.g1:
- Call<UserInfo> ca = testService.getRetrofit(Constants.Huo_url,"71");
- ca.enqueue(new Callback<UserInfo>() {
- @Override
- public void onResponse(Call<UserInfo> call, Response<UserInfo> response) {
- //在主线程
- UserInfo userInfo = response.body();
- Toast.makeText(MainActivity.this,userInfo.getDate().getNickname(),Toast.LENGTH_SHORT).show();
- }
- @Override
- public void onFailure(Call<UserInfo> call, Throwable t) {
- }
- });
- break;
- case R.id.g2:
- Map<String,String> map1=new HashMap<>();
- map1.put("mobile","15712885679");
- map1.put("password","123456");
- Call<BaseResponse<User>> call2 = testService.get2Retrofit(Constants.login_url,map1);
- call2.enqueue(new Callback<BaseResponse<User>>() {
- @Override
- public void onResponse(Call<BaseResponse<User>> call, Response<BaseResponse<User>> response) {
- BaseResponse<User> body = response.body();
- //在主线程
- Toast.makeText(MainActivity.this,body.data.mobile+body.msg,Toast.LENGTH_SHORT).show();
- }
- @Override
- public void onFailure(Call<BaseResponse<User>> call, Throwable t) {
- }
- });
- break;
- case R.id.p1:
- Call<UserInfo> call = testService.postRetrofit(Constants.Huo_url, "71");
- call.enqueue(new Callback<UserInfo>() {
- @Override
- public void onResponse(Call<UserInfo> call, Response<UserInfo> response) {
- //在主线程
- UserInfo userInfo = response.body();
- Toast.makeText(MainActivity.this,userInfo.getDate().getNickname(),Toast.LENGTH_SHORT).show();
- }
- @Override
- public void onFailure(Call<UserInfo> call, Throwable t) {
- }
- });
- break;
- case R.id.p2:
- Map<String,String> map=new HashMap<>();
- map.put("mobile","15712885679");
- map.put("password","123456");
- Call<UserInfo> ca2 = testService.post2Retrofit(Constants.login_url, map);
- ca2.enqueue(new Callback<UserInfo>() {
- @Override
- public void onResponse(Call<UserInfo> call, Response<UserInfo> response) {
- //在主线程
- UserInfo userInfo = response.body();
- Toast.makeText(MainActivity.this,userInfo.getMsg(),Toast.LENGTH_SHORT).show();
- }
- @Override
- public void onFailure(Call<UserInfo> call, Throwable t) {
- }
- });
- break;
- }
- }
- }