1

デバイス WiFi を使用してリクエストを送信するシナリオがあります。このシナリオでは、WiFi は接続されていますが、WiFi はさらにインターネットに接続されていません。この場合、HTTP 要求を送信しますが、HTTPResonse の応答は非常に遅くなります。デバイスが WiFi に接続されていて、WiFi がインターネットに接続されている場合、正常に動作します。

リクエストの最初のシナリオ コードで応答時間を短縮する必要があります。

public String[] doHttpGetWithCode(String url, HashMap<String, String> headerParam) throws Exception {
    String[] result = new String[2];
    HttpGet httpget = new HttpGet(url);
    HttpResponse response;
    int timeoutConnection = 3000;
    int timeoutSocket = 5000;
    HttpParams httpParameters = new BasicHttpParams();
    DefaultHttpClient httpclient = new DefaultHttpClient(httpParameters);




    httpget.addHeader("language", Constants.DEVICE_LANGUAGE);       
    Iterator myIterator = headerParam.keySet().iterator();
    while(myIterator.hasNext()) {
        String key=(String)myIterator.next();
        String value=(String)headerParam.get(key);        
        httpget.addHeader(key, value);

    }       
    HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);

    HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket);

    response = httpclient.execute(httpget);
    HttpEntity entity = response.getEntity();
    InputStream is = entity.getContent();
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();
    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    result[0] = response.getStatusLine().getStatusCode()+"";
    result[1] = sb.toString();
    return result;
}

これ以上インターネットに接続できないテスト WiFi を使用しています。この場合、次のコード行には多くの時間がかかります。

response = httpclient.execute(httpget);

応答時間を短縮する必要があります よろしくお願いします

4

1 に答える 1

0

次のようなものを使用できます。

/** * Web サービスの可用性をチェック * * @param host ホストのアドレス * @param seconds 秒単位のタイムアウト * @return ホストの可用性 */

public static boolean checkIfURLExists(String host, int seconds)
{
    HttpURLConnection httpUrlConn;
    try
    {
        httpUrlConn = (HttpURLConnection) new URL(host).openConnection();

        // Set timeouts in milliseconds
        httpUrlConn.setConnectTimeout(seconds * 1000);
        httpUrlConn.setReadTimeout(seconds * 1000);

        // Print HTTP status code/message for your information.
        System.out.println("Response Code: " + httpUrlConn.getResponseCode());
        System.out.println("Response Message: "
                + httpUrlConn.getResponseMessage());

        return (httpUrlConn.getResponseCode() == HttpURLConnection.HTTP_OK);
    }
    catch (Exception e)
    {
        System.out.println("Error: " + e.getMessage());
        return false;
    }
}
于 2013-02-08T08:10:38.537 に答える