public interface TestService {
//https://www.zhaoapi.cn/user/getUserInfo?uid=71
// @GET("user/getUserInfo?uid=71")
// Call<UserInfo> getUserInfo();
@GET("user/getUserInfo")
Call<UserInfo> getUserInfo(@Query("uid") String id);
@GET("user/getUserInfo")
Call<BaseResponseEnity<User>> getUser(@Query("uid") String id);
@GET("user/login")
Call<UserInfo> login(@QueryMap Map<String,String> params);
//get注解不赋值的情况下,意味着URL是不存在的,需要通过参数注解@Url去显式指定
@GET
Call<UserInfo> login(@Url String url,@QueryMap Map<String,String> params);
@POST("user/getUserInfo")
@FormUrlEncoded
Call<UserInfo> getUserInfo2(@Field("uid") String id);
//@Field他只应用于post请求情况下使用,@Query应用于get请求参数的声明
@POST("user/login")
Call<UserInfo> postLogin(@FieldMap Map<String,String> params);
/**
* 上传头像的方式,multipart
* @param uid
* @param multipart
* @return
*/
@POST
@Multipart
Call<UserInfo> uploadFile(@Query("uid") String uid, @Part Multipart multipart);
}
!!!!!activity
Retrofit retrofit = new Retrofit.Builder()
// .addCallAdapterFactory()
//支持gson解析,转换成javabean类
.baseUrl(Constants.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
//第二步,实现接口,通过动态代理实现TestService接口,把代理类映射到真正实现类
TestService testService = retrofit.create(TestService.class);
// Call<UserInfo> call = testService.getUserInfo("71");
// Call<BaseResponseEnity<User>> call1 = testService.getUser("71");
//
// call1.enqueue(new Callback<BaseResponseEnity<User>>() {
// @Override
// public void onResponse(Call<BaseResponseEnity<User>> call, Response<BaseResponseEnity<User>> response) {
//
// }
//
// @Override
// public void onFailure(Call<BaseResponseEnity<User>> call, Throwable t) {
//
// }
// });
call.enqueue(new Callback<UserInfo>() {
@Override
public void onResponse(Call<UserInfo> call, Response<UserInfo> response) {
UserInfo userInfo = response.body();
//回调在主线程,区别于ok(回调在子线程)
System.out.println("result========"+userInfo.getData().getNickname());
}
@Override
public void onFailure(Call<UserInfo> call, Throwable t) {
}
});
}
/**
* 演示post请求
* @param view
*/
public void post(View view) {
//创建retrofit对象
Retrofit retrofit = new Retrofit.Builder()
// .addCallAdapterFactory()
//支持gson解析,转换成javabean类
.baseUrl(Constants.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
//第二步,实现接口,通过动态代理实现TestService接口,把代理接口类映射到真正实现类
TestService testService = retrofit.create(TestService.class);
Call<UserInfo> getUserInfo = testService.getUserInfo2("71");
getUserInfo.enqueue(new Callback<UserInfo>() {
@Override
public void onResponse(Call<UserInfo> call, Response<UserInfo> response) {
UserInfo userInfo = response.body();
//回调在主线程,区别于ok(回调在子线程)
System.out.println("result2========"+userInfo.getData().getNickname());
}
@Override
public void onFailure(Call<UserInfo> call, Throwable t) {
}
});
}
/**
* querymap演示登录接口
* @param view
*/
public void getLogin(View view) {
Map<String,String> params = new HashMap<>();
params.put("mobile","18612991023");
params.put("password","111111");
Retrofit retrofit = new Retrofit.Builder().baseUrl(Constants.BASE_URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
TestService testService = retrofit.create(TestService.class);
Call<UserInfo> login = testService.login(params);
login.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) {
}
});
}