Медленный HTTPS-ответ в OkHttp, а также HttpsURLConnection в Android - PullRequest
0 голосов
/ 07 апреля 2020

При использовании протокола HTTP для получения JSON данных из API запрос обрабатывался менее 100 мс. Это приводит к загрузке страницы менее чем за 2,5 секунды. Когда я переключился на HTTPS, в обоих методах OkHttp и HttpsURLConnection, потребовалось целых 12 сгибов, почти 30 секунд, чтобы полностью загрузить приложение полной информацией.

Нижеприведенный код запускается только один раз при запуске приложения:

static OkHttpClient client;
static Request.Builder query;
static Connection conn;

public static void OneTime(Context context){
    OkHttpClient.Builder clientB = new OkHttpClient.Builder();
    client=clientB.build();
}

Функция «Ниже» используется для получения ответа от вызова:

public static String performPostCall(String requestURL,HashMap<String, String> postDataParams) {
        if(!postDataParams.containsKey("token")) {
            SharedPreferences sp=Tools.context.getSharedPreferences("eTutionPro",MODE_PRIVATE);;
            postDataParams.put("token", Tools.token == null ? sp.getString("SessionID", "") : Tools.token);
        }
        String response = "";
        try {
            FormBody.Builder formBody = new FormBody.Builder();
            postDataParams=fixNull(postDataParams);
            for(Map.Entry<String, String> entry : postDataParams.entrySet()){
                formBody.add(entry.getKey(),entry.getValue());
            }
            Request.Builder request;
            if(requestURL.endsWith("requests.php"))
                request=query;
            else
                request = new Request.Builder().url(requestURL);
            request.cacheControl(new CacheControl.Builder()
                    .build());
            request.post(formBody.build());
            Response r=client.newCall(request.build()).execute();
            response=r.body().string();
        } catch (Exception e) {
            e.printStackTrace();
            response="";
        }
        return response;
}

Есть предложения о том, как улучшить время ответа?

...