Я думаю, что виновником здесь является тайм-аут, который вы установили для OkHttp
. Я бы сказал, установить время ожидания, чтобы иметь большее значение, как требуется.
OkHttpClient okClient = new OkHttpClient.Builder()
.readTimeout(600, TimeUnit.SECONDS)
.connectTimeout(600, TimeUnit.SECONDS)
.writeTimeout(600, TimeUnit.SECONDS)
.addInterceptor(interceptor)
.addNetworkInterceptor(
new Interceptor() {
@Override
public Response intercept(Interceptor.Chain chain) throws IOException {
Request request = null;
Request original = chain.request();
// Request customization: add request headers
Request.Builder requestBuilder = original.newBuilder()
.addHeader("ClientID", "xxxxxx")
.addHeader("x-access-token", "3uYch6X1i2OuRd3DvBPvvwiMRqPboBdRt/PbSiP0KFB4eaQQFg==")
.addHeader("Content-type", "multipart/form-data; boundary=" + "SomeRandomConstant");
.addHeader("PartnerID", "fV17XLswDUwlU9q9ofx4pkhezw==");
request = requestBuilder.build();
return chain.proceed(request);
}
})
.build();
Более того, вы можете рассмотреть возможность установки уровня журнала в interceptor
на NONE
, как , предложенное здесь .
interceptor.setLevel(HttpLoggingInterceptor.Level.NONE);
Я цитирую Джейка Уортона из упомянутой выше проблемы.
Вызывая .setLogLevel(RestAdapter.LogLevel.FULL)
, вы заставляете Retrofit буферизовать все тело запроса в память, чтобы он мог регистрироваться. Это то, что делает вызов readBodyToBytesIfNe Необходимый в трассировке стека.
Включение ведения журнала таким образом, должно быть сделано только при отладке.
Также, пожалуйста, убедитесь, что вы добавили правильное Content-Type
в заголовке вашего запроса.
.addHeader("Content-type", "multipart/form-data; boundary=" + "SomeRandomConstant");
Пожалуйста, см. Ответ здесь , чтобы получить больше информации о настройке типа контента.
Надеюсь, это поможет!