Ошибка IOexception в Java Android

207
22 декабря 2017, 01:54

В приложени в первом активити идет хттп запрос на сервер. Использую 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);
        }
    }
}
READ ALSO
Java и работа с Oracle

Java и работа с Oracle

Решил попробовать написать программу на Java в связке с БД OracleПрограмма будет делать следующее:

163
Сокращение времени билда приложения

Сокращение времени билда приложения

Билд и запуск приложения в Android Studio 30 слишком долгий(иногда 20-25 минут) при развертывании на Android 4

144
Как создать метод используя JDBC

Как создать метод используя JDBC

ПриветПытаюсь написать метод updateUser с помощью которого можно менять все данные в таблице SQL

253
Путь к выбранному файлу из JList

Путь к выбранному файлу из JList

Есть список JList отображающий файлы определенного диска на компеВыбираю определенный файл или папку

209