-1
구성된 다른 base을에 연결을 시도하는 것은 Retrofit
OkHttp 그때 내가 <code>HttpLoggingInterceptor</code>로 다음과 같은 로그를 얻고 개조
OkHttp: --> GET http://192.168.1.13/api/config
D/OkHttp: --> END GET
다음
D/OkHttp: <-- HTTP FAILED: java.net.ConnectException: Failed to connect to /192.168.1.20:8888
D/OkHttp: <-- HTTP FAILED: java.net.SocketException: Socket closed
참고 기본 URL 및 URL의 차이에 추가 연결 예외입니다. 나는 이것이 무엇을 일으키는 지 확신하지 못한다. 내 응용 프로그램 서버 URL은 컴파일시 알 수 없기 때문에 런타임에 갱신 어댑터가 작성됩니다. 여기에 관련 코드 난 그냥 setIpAddress
메서드를 호출하여 기본 URL을 변경해야
private void init() {
mBuilder = new OkHttpClient.Builder();
// TODO: 08/04/16 might want to remove this in prod
mBuilder.hostnameVerifier((s, sslSession) -> true);
mBuilder.connectTimeout(15, TimeUnit.SECONDS);
mBuilder.readTimeout(15, TimeUnit.SECONDS);
mBuilder.writeTimeout(10, TimeUnit.SECONDS);
// Add headers
mBuilder.interceptors().add(chain -> {
Request request = chain.request();
request = request.newBuilder()
.build();
return chain.proceed(request);
});
// Logging
if(BuildConfig.DEBUG) {
HttpLoggingInterceptor interceptor = new HttpLoggingInterceptor();
interceptor.setLevel(HttpLoggingInterceptor.Level.BODY);
mBuilder.interceptors().add(interceptor);
}
mGson = new GsonBuilder()
.setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES)
.setDateFormat(Constants.DATE_FORMAT)
.create();
sDispatcher = new Dispatcher();
sDispatcher.setMaxRequests(10);
mBuilder.dispatcher(sDispatcher);
}
public void setIpAddress(String ipAddress){
init();
String newBaseUrl = "http://"+ ipAddress;
OkHttpClient okHttpClient = mBuilder.build();
mRetrofit = new Retrofit.Builder()
.baseUrl(newBaseUrl)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(mGson))
.addCallAdapterFactory(RxJava2CallAdapterFactory.createWithScheduler(Schedulers.io()))
.build();
mService = mRetrofit.create(APIService.class);
}
매번,
downvote에 대한 이유? –
이것은 오늘 아침 이후로 디버깅하려고하는 진짜 문제입니다. 진짜 이유없이 내 질문에 투표하는 것은 어리 석다! –