Retrofit的依赖:
compile 'com.squareup.retrofit2:retrofit:2.0.0-beta4'//Retrofit2所需要的包
compile 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'//ConverterFactory的Gson依赖包
compile 'com.squareup.retrofit2:converter-scalars:2.0.0-beta4'//ConverterFactory的String依赖包
API类:接口地址
public class API {
public static final String HOST="http://gank.io/api/";
public static final String URL="data/Android/10/1";
public static final String HOSTURL="http://120.27.23.105/";
public static final String loginurl="user/login";
}
ServiceAPI:服务接口
public interface SerViceAPI {
@GET(API.URL)
Call<Bean> getBean();
@POST(API.HOSTURL+API.loginurl)
Call<LoginBean> getLogin(@Query("mobile")String mob,@Query("password") String pass);
}
RetrofitHepler:对OKhttp的封装
public class RetrofitHepler {
public static OkHttpClient okHttpClient;
public static SerViceAPI serViceAPI;
/**
* 优先执行
*/
static {
getOkHttpClient();
}
public static OkHttpClient getOkHttpClient(){
if(okHttpClient==null){
synchronized (OkHttpClient.class){
if(okHttpClient==null){
okHttpClient=new OkHttpClient();
}
}
}
return okHttpClient;
}
public static SerViceAPI getSerViceAPI(){
if(serViceAPI==null){
synchronized (OkHttpClient.class){
if(serViceAPI==null){
serViceAPI=onCreate(SerViceAPI.class,API.HOSTURL);
}
}
}
return serViceAPI;
}
public static <T> T onCreate(Class<T>tClass,String url){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(url)
.addConverterFactory(GsonConverterFactory.create())
.build();
return retrofit.create(tClass);
}
}
对Bean进行封装省略
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SerViceAPI serViceAPI = RetrofitHepler.getSerViceAPI();
/* Call<Bean> call= serViceAPI.getBean();
call.enqueue(new Callback<Bean>() {
@Override
public void onResponse(Call<Bean> call, Response<Bean> response) {
Log.i("TAG",response.body().getResults().get(0).get_id());
}
@Override
public void onFailure(Call<Bean> call, Throwable t) {
}
});*/
Call<LoginBean> beanCall = serViceAPI.getLogin("18752333118", "123456");
beanCall.enqueue(new Callback<LoginBean>() {
@Override
public void onResponse(Call<LoginBean> call, Response<LoginBean> response) {
Log.i("MSG",response.body().getMsg());
}
@Override
public void onFailure(Call<LoginBean> call, Throwable t) {
}
});
}
}