Introducing retrofit
Introduce dependencies in the build.gradle file
//网络
implementation 'com.squareup.okhttp3:okhttp:3.8.1'
implementation 'com.loopj.android:android-async-http:1.4.9'
implementation 'com.squareup.retrofit2:retrofit:2.3.0'
implementation('com.squareup.retrofit2:converter-gson:2.0.0-beta4') {
exclude group: 'com.google.code.gson', module: 'gson'
}
Define the network request interface ApiAiService.java
public interface ApiAiService {
String API_API_URL = "http://192.168.10.53:8080/interface/";
@POST("device/login")
Call<ComResBean<DeviceLoginRes>> deviceLogin(@Body DeviceSn deviceSn);
@GET("interior/list")
Call<ResponseBody> getBuildingInteriors(@Query("deviceSn") String deviceSn);
}
Fulfill network request
import java.io.IOException;
import java.util.concurrent.TimeUnit;
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.ResponseBody;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class HttpAiClientHelper {
private static final String TAG = "HttpAiClientHelper";
private ApiAiService apiService;
private static volatile HttpAiClientHelper instance;
private HttpAiClientHelper() {
apiService = initHttp().create(ApiAiService.class);
}
public static HttpAiClientHelper get() {
if (instance == null) {
synchronized (HttpAiClientHelper.class) {
if (instance == null) {
instance = new HttpAiClientHelper();
}
}
}
return instance;
}
public ApiAiService getApiService() {
return apiService;
}
private Retrofit initHttp() {
Interceptor interceptor = new Interceptor() {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
Request request = chain.request();
String url = request.url().toString();
String logStr = url;
Log.d("Constant", " request url: " + logStr);
return chain.proceed(request);
}
};
OkHttpClient.Builder builder = new OkHttpClient().newBuilder()
.addInterceptor(interceptor)
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS);
OkHttpClient client = builder.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(ApiAiService.API_API_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build();
return retrofit;
}
/**
* 设备注册接口
*
* @param
*/
public void deviceLogin(DeviceSn deviceSn) {
Log.e(TAG, " deviceLogin ");
apiService.deviceLogin(deviceSn).enqueue(new Callback<ComResBean<DeviceLoginRes>>() {
@Override
public void onResponse(Call<ComResBean<DeviceLoginRes>> call, Response<ComResBean<DeviceLoginRes>> response) {
if (null == response.body()) {
return;
}
if (response.body().getCode() == 200) {
//登录TOKEN缓存
SharedPreferenceUtil.setLoginToken(response.body().getData().getToken());
}
}
@Override
public void onFailure(Call<ComResBean<DeviceLoginRes>> call, Throwable t) {
Log.e(TAG, " deviceLogin onFailed send " + t.getMessage());
}
});
}
public void getBuildingInteriors(String deviceSn, Callback<ResponseBody> callback) {
apiService.getBuildingInteriors(deviceSn).enqueue(callback);
}
}
Get the full request path