下列是必须的
导入依赖:compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.okhttp3:logging-interceptor:3.5.0'
具体版本根据AS来决定,但必须是squareup公司的。
导入联网权限:<uses-permission android:name="android.permission.INTERNET"/>
创建Retrofit对象,由于Retrofit是有构建者模式来完成的,因此其创建的时候用build
代码如下:
retrofit = new Retrofit.Builder()
.baseUrl("http://www.yuyigufen.com/")//表示你要请求的网址的Host部分,注意,前面没有"/",后面有"/"
.addConverterFactory(GsonConverterFactory.create())//添加转换器工厂对象的序列化和反序列化。这个必须要添加
.build();//构建得到Retrofit对象,另外别的常用的就是可以.client()//添加一个客户端对象
创建(得到)一个自定义的API端点接口的实现
首先,准备实体类,里面的属性最好就是全部解析,其他的不需要特别的调整,全部解析就可以了。
在准备自定义的接口
public interface MyInterface {
@POST("API/public/index/login/check.html")//这里展示的是post请求,这里面放的是path部分,后面不用添加"/"
public Call<ShiYan> getInfo(@QueryMap ArrayMap<String,String> params);
//Call<你自己写的实体类>,
//@QueryMap 都是必须的
//params 表示后期添加的请求参数
}
可以得到API端点接口了
myInterface = retrofit.create(MyInterface.class);//得到API端点接口对象
params = new ArrayMap<>();//开始配置请求参数
params.put("username","admin");//根据自定义的接口里面类型确定
params.put("password","admin");
得到API端点接口对象之后,将其设置
call = myInterface.getInfo(params);//call 其实是Call<ShiYan> call;
前面都是准备工作。最后开始执行
可以选择同步执行,可以选择异步执行,下面是异步执行:
call.enqueue(new Callback<ShiYan>() {
@Override
public void onResponse(Call<ShiYan> call, Response<ShiYan> response) {
//这个是请求成功之后的回调。返回的是一个对象,是你自己定义的实体类的对象
body = response.body();
// Toast.makeText(MainActivity.this,body.getUerID(),Toast.LENGTH_SHORT).show();
Log.d("flag","------"+body.getStatus());
Log.d("flag","------"+body.getInfo().getContent());
Log.d("flag","------"+body.getInfo().getUserID());
}
@Override
public void onFailure(Call<ShiYan> call, Throwable t) {
//这个是请求失败的回调
Log.d("flag","不好意思失败了");
Log.d("flag","ssssssssssssssssss"+t);
}
});