Android studio使用新控件,网络请求框架Retrofit
以下为使用方式:
——————————————————————————
首先导入包:com.squareup.retrofit2:retrofit:2.1.0
com.squareup.retrofit2:converter-gson:2.1.0
Retrofit 2 须导入converter-gson来解析获取到的json数据
创建一个interface,用于拼接URL和请求:
import retrofit2.Call;
import retrofit2.http.Field;
import retrofit2.http.FormUrlEncoded;
import retrofit2.http.GET;
import retrofit2.http.POST;
import retrofit2.http.Path;
/**
* Created by Zheng on 2016/9/1.
*/
public interface Request {
//get请求:{}里面的value由@Path注解传入方法
@GET("user/{value}") // 这段url将拼在BaseUrl后面
public Call<UserModel> loginGet(@Path("value") String value);
//post请求:通过@FormUrlEncoded、和@POST注解,指明访问的地址
@FormUrlEncoded
@POST("Login") // 这段url将拼在BaseUrl后面
//通过@Field来指定key,后面跟上value
Call<UserModel> loginPost(@Field("user") String user);
}
RetrofitActivity参考代码:
/** 建议:Retrofit2 URL定义方式,BaseUrl末尾连接处的 "/" 写在BaseUrl的末尾,而不要写在interface注解请求@URL的头部 **/
String URL = "https://192.168.1.1/"; // BASE URL
//为BaseUrl创建一个适配器,设置Gson解析器
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(URL)
.addConverterFactory(GsonConverterFactory.create())
.build();
//为我们得到类创建一个服务适配器
Request request = retrofit.create(Request.class);
//get请求
Call<UserModel> call = request.loginGet("zheng001");
//post请求
Call<UserModel> call = request.LoginPost("zheng001");
call.enqueue(new Callback<UserModel>() {
@Override
public void onResponse(Call<UserModel> call, Response<UserModel> response) {
//从response.body()得到结果回调
UserModel user = response.body();
tv.setText(user.getUserName());
//取消加载匡
Cancelprogress();
}
@Override
public void onFailure(Call<UserModel> call, Throwable t) {
//取消加载匡
Cancelprogress();
}
});
//取消请求事务调用方法
call.cancel();