Я использую библиотеку Okhttp3, и я новичок в ней. Я прочитал некоторые из уроков и его работоспособность до тех пор, пока этот случай использования не появится:Неожиданная ошибка конца потока при втором попадании в API
У меня есть внешний класс Asynctask, где я выполняю коды POST и GET. Поэтому, когда я впервые вызываю Asynctask, он работает нормально. Во второй раз, когда я вызываю ту же Asynctask, она дает мне ошибку java.io.IOException: неожиданный конец потока на okhttp3.Address .....
Может кто-нибудь объяснить, почему это происходит? Я создаю объект OkHttpClient в действии и передаю его в Asynctask.
Это конструктор:
public Post(JsonObject jsonParams){
this.jsonParams = jsonParams;
}
Это фоновая задача:
Response response = null;
try {
OkHttpClient client = new OkHttpClient.Builder()
.retryOnConnectionFailure(true)
.build();
RequestBody body = RequestBody.create(JSON, jsonParams);
Request.Builder requestBuilder = new Request.Builder()
.url(url)
.post(body)
.addHeader(APP_AUTHORIZATION_KEY, AUTHORIZATION_KEY);
Request request = requestBuilder.build();
response = client.newCall(request).execute();
if (response.isSuccessful()) {
responseBody = response.body().string();
Log.v("POST RESPONSE", "response" + responseBody);
}
} catch (Exception ex) {
ex.printStackTrace();
} finally {
if (response != null)
response.close();
}
Я отправляю мой журнал:
java.io.IOException: unexpected end of stream on [email protected]
12-02 10:30:11.544 20214-22391/com.test.network W/System.err: at okhttp3.internal.http.Http1xStream.readResponse(Http1xStream.java:199)
12-02 10:30:11.544 20214-22391/com.test.network W/System.err: at okhttp3.internal.http.Http1xStream.readResponseHeaders(Http1xStream.java:125)
12-02 10:30:11.544 20214-22391/com.test.network W/System.err: at okhttp3.internal.http.HttpEngine.readNetworkResponse(HttpEngine.java:775)
12-02 10:30:11.544 20214-22391/com.test.network W/System.err: at okhttp3.internal.http.HttpEngine.access$200(HttpEngine.java:86)
12-02 10:30:11.544 20214-22391/com.test.network W/System.err: at okhttp3.internal.http.HttpEngine$NetworkInterceptorChain.proceed(HttpEngine.java:760)
12-02 10:30:11.544 20214-22391/com.test.network W/System.err: at okhttp3.internal.http.HttpEngine.readResponse(HttpEngine.java:613)
12-02 10:30:11.544 20214-22391/com.test.network W/System.err: at okhttp3.RealCall.getResponse(RealCall.java:244)
12-02 10:30:11.544 20214-22391/com.test.network W/System.err: at okhttp3.RealCall$ApplicationInterceptorChain.proceed(RealCall.java:201)
12-02 10:30:11.564 20214-22391/com.test.network W/System.err: at okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:163)
12-02 10:30:11.574 20214-22391/com.test.network W/System.err: at okhttp3.RealCall.execute(RealCall.java:57)
12-02 10:30:11.574 20214-22391/com.test.network W/System.err: at com.test.network.tasks.Post.doInBackground(Post.java:60)
12-02 10:30:11.574 20214-22391/com.test.network W/System.err: at com.test.network.tasks.Post.doInBackground(Post.java:21)
12-02 10:30:11.584 20214-22391/com.test.network W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:288)
12-02 10:30:11.584 20214-22391/com.test.network W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
12-02 10:30:11.584 20214-22391/com.test.network W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
12-02 10:30:11.584 20214-22391/com.test.network W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
12-02 10:30:11.584 20214-22391/com.test.network W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
12-02 10:30:11.604 20214-22391/com.test.network W/System.err: at java.lang.Thread.run(Thread.java:841)
12-02 10:30:11.604 20214-22391/com.test.network W/System.err: Caused by: java.io.EOFException: \n not found: size=0 content=…
12-02 10:30:11.614 20214-22391/com.test.network W/System.err: at okio.RealBufferedSource.readUtf8LineStrict(RealBufferedSource.java:215)
12-02 10:30:11.614 20214-22391/com.test.network W/System.err: at okhttp3.internal.http.Http1xStream.readResponse(Http1xStream.java:184)
показать полный журнал поможет разрешить –
@RajeshRajendiran Я отправил свой журнал – raphPradhan
Вам не нужно AsyncTask, если вы используете OkHttp ASync запросы. Используйте 'client.newCall (запрос) .enqueue' ... См. Https://github.com/square/okhttp/wiki/Recipes#asynchronous-get –