GitHub: https://github.com/square/retrofit
一、post json 数据
1、添加依赖
// retrofit
implementation 'com.squareup.retrofit2:retrofit:2.5.0'
implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
2、发送的数据实体类 OrderRequest
public class OrderRequest
{
private String order;
// 省略getter setter
}
3、接收服务器返回数据的实体类 OrderResponse
public class OrderResponse
{
/**
* 成功状态
*/
private boolean su;
/**
* 状态消息
*/
private String msg;
// 省略getter setter
}
4、Retrofit的实现接口 IRequestClient
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
public interface IRequestClient
{
/**
* 发送json数据形式的post请求,把网络请求接口的后半部分 api 写在里面
* 返回类型为Call<*>,*是接收数据的类
* @Body即非表单请求体,被@Body注解的 OrderRequest 将会被Gson转换成json发送到服务器
*
* @param pData
* @return
*/
@POST("api")
Call<OrderResponse> request(@Body OrderRequest pData);
}
5、发送请求
public void quest()
{
// 创建Retrofit对象
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://服务器地址/")
// 添加Gson支持
.addConverterFactory(GsonConverterFactory.create())
.build();
// 创建网络请求接口的实例,调用接口
IRequestClient api = retrofit.create(IRequestClient.class);
// OrderRequest 在接口api中转成了json格式的数据
OrderRequest pRequest = new OrderRequest();
Call<OrderResponse> call = api.request(pRequest);
// 发送网络请求(异步),回调方法执行在主线程
call.enqueue(new Callback<OrderResponse>()
{
// 请求成功
@Override
public void onResponse(Call<OrderResponse> call, Response<OrderResponse> response)
{
OrderResponse _Response = response.body();
if (_Response != null)
{
boolean _Success = _Response.isSu();
String _Msg = _Response.getMsg();
Logger.d(_Success + " - " + _Msg);
}
else
{
Logger.e("_Response == null");
}
}
// 求失败
@Override
public void onFailure(Call<OrderResponse> call, Throwable t)
{
Logger.e("请求失败: " + t.toString());
}
});
}