public interface StuApi { //使用GET定义一个业务方法,获取类表信息 @GET("test") Call<User> getOrder(); }
4 创建接口实例对象
stuApi = retrofit.create(StuApi.class);
5.获取业务方法的调用对象,并进行请求
//调用接口的 方法获取call对象,此时只是获取了http请求信息的封装独享,就是Call对象 //当时此时还未执行http请求 Call<User> uSEOrder = stuApi.getOrder(); /**Response<User> response = useOrder.execute(); User user = response.body(); tv.setText(user.nickname); //以上的代码会阻塞UI线程,因此不能在安卓的主线程中调用,不然会面临NetworkOnMainThreadException。如果你想调用execute方法,请在后台线程执行。**/ //异步执行业务方法 useOrder.enqueue(new Callback<User>() { @Override public void onResponse(Call<User> call, Response<User> response) { //response就是响应结果的封装对象 User body = response.body(); tv.setText(body.nickname+body.gender); } @Override public void onFailure(Call<User> call, Throwable t) { tv.setText(t.getMessage()); } }); }
6.使用POST注解
//使用POST注解,进行post请求,登录的接口,提交key-value数据 @FormUrlEncoded //如果没有这句会报错@Field parameters can only be used with form encoding @POST("login") Call<People> login(@Field("username")String p1,@Field("passWord")String p2);