2014-12-06 92 views
0

我想在asynk任务中ping服务器,但我得到sockettimeout异常,当我输入无效的端口号,以便导致应用程序挂起。 asynk任务的Post方法从未被称为&应用程序不响应可能我知道它为什么会发生。我正在使用下面的代码来达到这个目的。sockettimeoutexception导致应用程序挂起

private class UrlDataProvider3 extends AsyncTask<String, Void, String> 
{ 

    String ret=""; 
    int checkStatus; 
    Boolean exception=false; 
    @Override 
    protected String doInBackground(String... url) 
    { 

     HttpURLConnection con = null; 

     try 
      { 

      Log.i("RAE", "urlData"+url[0]); 
      HttpURLConnection.setFollowRedirects(true); 
      con = (HttpURLConnection) new URL(url[0]).openConnection(); 
       con.setRequestMethod("POST"); 
       con.setConnectTimeout(20000); 

      } 


     catch (IOException e) 
      { 
      if(e.toString().contains("java.net.SocketTimeoutException:")) 
      { 
       log.i("Hello","Exception Occurs"); 
       return null; 
      } 

      } 
    return ret; 
    } 
    @Override 
    protected void onPostExecute(String result) { 
     // TODO Auto-generated method stub 
     super.onPostExecute(result); 
     Log.i("RAE"," Asyc finished"); 

} 
+0

返回NULL处理它' – 2014-12-06 06:30:56

+0

不起作用 – 2014-12-06 06:31:58

+0

catch SocketTimeoutException – 2014-12-06 06:37:01

回答

1

你需要抓SocketTimeoutExceptioncatchreturn语句那么只有它会去onPostExecute

catch (SocketTimeoutException ste) 
{ 
    return null; 
} 
catch (IOException e) 
{ 
     return null; 

} 

,并在`IOException异常onPostExecute

@Override 
protected void onPostExecute(String result) { 

    super.onPostExecute(result); 
    Log.i("RAE"," Asyc finished"); 
    if (result !=null) 
    { 
     // your code 
    } 
    else 
    { 
     // You got an exception 
    } 
+0

应用程序仍然挂起。 – 2014-12-06 06:41:22

+0

调试并告诉我它正在* Catch *块中。检查logcat也 – 2014-12-06 06:42:08

+0

它是在catch块并打印我的声明 – 2014-12-06 06:43:27

相关问题