Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/377.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java DefaultHttpClient导致异步任务延迟_Java_Android_Android 4.4 Kitkat_Http Get - Fatal编程技术网

Java DefaultHttpClient导致异步任务延迟

Java DefaultHttpClient导致异步任务延迟,java,android,android-4.4-kitkat,http-get,Java,Android,Android 4.4 Kitkat,Http Get,我正在开发一个应用程序,该应用程序使用DefaultHttpClient向服务器发送请求。我正在使用GET方法发送请求。如果端口号错误,则我会收到连接超时异常。我已使用异常处理程序并在异常发生时返回值。但遗憾的是,60秒后调用Post-Execute protected String doInBackground(String... url) { HttpURLConnection con = null; HttpGet httpGet = null;

我正在开发一个应用程序,该应用程序使用DefaultHttpClient向服务器发送请求。我正在使用GET方法发送请求。如果端口号错误,则我会收到连接超时异常。我已使用异常处理程序并在异常发生时返回值。但遗憾的是,60秒后调用Post-Execute

protected String doInBackground(String... url) 
    {

        HttpURLConnection con = null;
        HttpGet httpGet = null;
        DefaultHttpClient httpClient=null;

        try 
          { 
            httpGet = new HttpGet(url[0]);
            HttpParams httpParameters = new BasicHttpParams();
            int timeoutConnection = 5000;
            int sockettimeout=5000;
            HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection);
            HttpConnectionParams.setSoTimeout(httpParameters, sockettimeout);
            httpClient = new DefaultHttpClient(httpParameters);               
             HttpResponse httpResponse = httpClient.execute(httpGet );
             int code=httpResponse.getStatusLine().getStatusCode();
}
catch (IOException e)
          {

             if(e.toString().contains("org.apache.http.conn.ConnectTimeoutException"))
             {
                 Log.i("RAE", "Connection Timeedout");
                 httpClient.getConnectionManager().closeExpiredConnections();
                 httpClient.getConnectionManager().shutdown();

                 httpGet.abort();



                     Log.i("log", "Before  Return");
                    return "done";
             }
@Override
    protected void onPostExecute(String result) {
             Log.i("log", "Async finished");


}

但是post会在60秒后调用。我可以知道为什么会发生这种情况吗

您需要发布更多代码。服务器很可能在返回超时错误之前等待60秒超时。这不是客户端的问题。。。或者发布logcat,以便更清楚地了解您的问题所在。我得到的异常是12-31 13:20:04.346:IAGS6537:org.apache.http.conn.ConnectTimeoutException:Connect to/timeout这是您的logcat中的一行,更多的行会有所帮助。此外,您还应该添加类似e.toString的内容,以提供更多信息。。。不仅仅是e.toString.contains-只需全部显示,对吗???e.toString已将url[0]包含的内容打印出来,您确定它是有效且可访问的url吗?