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、發(fā)送的數據實體類 OrderRequest
public class OrderRequest
{
private String order;
// 省略getter setter
}
3、接收服務器返回數據的實體類 OrderResponse
public class OrderResponse
{
/**
* 成功狀態(tài)
*/
private boolean su;
/**
* 狀態(tài)消息
*/
private String msg;
// 省略getter setter
}
4、Retrofit的實現接口 IRequestClient
import retrofit2.Call;
import retrofit2.http.Body;
import retrofit2.http.POST;
public interface IRequestClient
{
/**
* 發(fā)送json數據形式的post請求,把網絡請求接口的后半部分 api 寫在里面
* 返回類型為Call<*>,*是接收數據的類
* @Body即非表單請求體,被@Body注解的 OrderRequest 將會被Gson轉換成json發(fā)送到服務器
*
* @param pData
* @return
*/
@POST("api")
Call<OrderResponse> request(@Body OrderRequest pData);
}
5、發(fā)送請求
public void quest()
{
// 創(chuàng)建Retrofit對象
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://服務器地址/")
// 添加Gson支持
.addConverterFactory(GsonConverterFactory.create())
.build();
// 創(chuàng)建網絡請求接口的實例,調用接口
IRequestClient api = retrofit.create(IRequestClient.class);
// OrderRequest 在接口api中轉成了json格式的數據
OrderRequest pRequest = new OrderRequest();
Call<OrderResponse> call = api.request(pRequest);
// 發(fā)送網絡請求(異步),回調方法執(zhí)行在主線程
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());
}
});
}