В приложени в первом активити идет хттп запрос на сервер. Использую Okhttp3 для запроса. Таймаут у запроса 10минут на всякий случай если интернет тихий. Проблема в том что при подключении быстрого вайфая он все идеально загружает а вот на мобильных данных (3G) происходит IOexception. Не могу понять изза чего. Может для мобильных данных нужно какое нибудь разрешения кроме стандартных? при этом на одном телефон работает идиально на другом плохо. При этом если запрос должен длится десять минут он длится 30 секунд максимум это код запроса:
import android.content.Context;
import android.os.AsyncTask;
import okhttp3.*;
import java.io.IOException;
import java.util.concurrent.TimeUnit;
public class AsyncQuery extends AsyncTask<String, String, String> {
private Context context;
private Callback callBack;
private String[] data;
private String[] par;
private String[] key;
AsyncQuery(Context c, String[] p, String[] v, String[] k, Callback back) {
context = c;
callBack = back;
data = v;
par = p;
key = k;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
OkHttpClient client = new OkHttpClient.Builder()
.readTimeout(10, TimeUnit.MINUTES)
.connectTimeout(10, TimeUnit.MINUTES)
.writeTimeout(10, TimeUnit.MINUTES)
.build();
FormBody.Builder builder = new FormBody.Builder()
.add("code", par[1]);
if (data[0] != null) {
for (int i = 0; i < data.length; i++) {
builder.add(key[i], data[i]);
}
}
RequestBody formBody = builder.build();
Request request = new Request.Builder()
.url(par[0])
.post(formBody)
.build();
try {
Response response = client.newCall(request).execute();
String serverAnswer = response.body().string();
return serverAnswer;
} catch (IOException e) {
e.printStackTrace();
return "1";
}
}
@Override
protected void onPostExecute(String rs) {
super.onPostExecute(rs);
switch (rs) {
case "1":
callBack.onReqFail(false, "err01-");
break;
default:
callBack.onSuccess(context, rs);
}
}
}
protected void onPostExecute(String rs) – Fariz Mamedow Dec 20 '17 at 09:59
e.printStackTrace();передreturn "1";печатает в консоль трассировку стека вызова на момент возникновения ошибки. Посмотрите в LogCat студии, он должен туда печататься – rjhdby Dec 20 '17 at 10:06