2014-12-06 104 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

相關問題