通过HTTPS从应用程序连接到后端服务器会导致延迟/超时

时间:2018-01-30 14:01:03

标签: java android ssl https

我正在开发一个通过HTTPS连接到后端服务器的Android应用程序。当我使用移动数据时,一切都正常工作 - 没有错误和其他类似的事情。但是,当我打开WiFi并尝试从后端服务器获取一些数据时,虽然我只下载了两行文本,但我的延迟时间很长(甚至40秒)。我还注意到,如果我通过HTTP连接到后端服务器,使用移动数据和WiFi都没有问题。如果我正确设置SSL协议并且一切似乎都已正确完成,我已经多次测试过。

我向您提供了一段代码,该代码负责从应用程序连接后端服务器:

private boolean downloadData() {
        try {
            URI uri = new URI("https://www.example.com/resources/script/get_data.php");
            HttpClient httpClient = new DefaultHttpClient();
            HttpPost httpPost = new HttpPost(uri);
            httpPost.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
            httpPost.setHeader("Pragma", "no-cache");

            HttpResponse httpResponse = httpClient.execute(httpPost);
            String result = EntityUtils.toString(httpResponse.getEntity());
            if(result.equals("error")) {
                return false;
            }
            result = result.replaceAll("\"", "\\\"");
            JSONArray jsonArray = new JSONArray(result);

            // code which receive and parse data from JSON

            return true;
        } catch (URISyntaxException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (JSONException e) {
            e.printStackTrace();
        }

        return false;
    }

如果您想获得更多信息/代码,请写下评论。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

您需要通过某些监控程序跟踪您的请求。之后,您可以看到哪个节点创建了延迟。请显示这些数据。