问题描述:
手机与电脑处在同一网段,但是服务端与手机端不能进行接口通信。
解决方式:
一、问题定位:
IP的固有化,Retrofit对象的单例模式创建。导致接口引用的都是同一个生成的单列对象,baseUrl的请求路径不能动态变更。
public static String BASEURL = AppConstant.BASE_URL;
private static Retrofit retrofit;
private static RetrofitManager retrofitManager;
//提供共有的方法供外界访问
public static RetrofitManager newInstance() {
if (retrofitManager == null) {
synchronized (RetrofitManager.class) {
retrofitManager = new RetrofitManager();
}
}
return retrofitManager;
}
//构造方法私有化
private RetrofitManager() {
retrofit = getRetrofit();
}
//构建Ok请求
private OkHttpClient getOkHttpClient() {
return new OkHttpClient.Builder()
.connectTimeout(5000, TimeUnit.MILLISECONDS)
.build();
}
//构建Retrofit
private Retrofit getRetrofit() {
return new Retrofit.Builder()
.baseUrl(BASEURL)
.client(getOkHttpClient())
.addConverterFactory(GsonConverterFactory.create())
// .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
.build();
}
二、 解决方式
将ip地址动态变更,根据动态生成的IP地址来实例化对象
//构造方法
public RetrofitManager() {
retrofit = getRetrofit();
}
使用场景
对于APP开发中和服务端接口交互,实现数据的持久化操作。APP开发中服务器调试的一些需求。