1

我需要在应用程序启动时对不同的 Web 服务 (php) 进行大约 15 次调用。

我正在为帖子使用以下代码

public static String post(String url, List<BasicNameValuePair> 
           postvalues, HttpClient httpclient) {
    try {
        if (httpclient == null) {
            httpclient = new DefaultHttpClient();
        }
        HttpPost httppost = new HttpPost(url);

        if ((postvalues == null)) {
            postvalues = new ArrayList<BasicNameValuePair>();
        }
        httppost.setEntity(new UrlEncodedFormEntity(postvalues, "UTF-8"));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);
        return requestToString(response);
    } catch (Exception e) {
        e.printStackTrace();
        return null;
    }

}



private static String requestToString(HttpResponse response) {
    String result = "";
    try {
        InputStream in = response.getEntity().getContent();
        BufferedReader reader = new BufferedReader(new InputStreamReader(in));
        StringBuilder str = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            str.append(line + "\n");
        }
        in.close();
        result = str.toString();
    } catch (Exception ex) {
        result = "Error";
    }
    return result;
}

问题是某些请求必须按给定顺序请求,每个请求大约需要 1-2 秒,因此“加载启动”大约需要 10 秒。

所以我的问题是:由于所有连接都到同一台服务器,我该如何改善这种延迟?是否有某种方法可以打开连接并通过该“隧道”发送所有请愿书以减少延迟?

注意:我测试了代码,并且请求在每个连接中使用新的 httpclient 重用 httpclient 的时间相同

谢谢

4

1 回答 1

2

您想到的是重用 TCP 连接的 HTTP 持久连接。

关于这个话题,Stackoverflow 上已经有一个很好的问题和答案:

Android 上的持久 HttpURLConnections

于 2012-05-08T12:12:05.930 回答