iT邦幫忙

0

[Android 開發]關於 HttpClient 的 execute() 方法的執行問題

你好,我的 開發環境:
JDK; 1.8.0_05
Android 專案的版本是 Android 4.1.2
AVD 模擬器的 版本是 Android 4.1.2
eClipse 的版本是 Kepler Service Release 2

我的程式只是呼叫一個 html 檔,只是測試看看是否可以正常的透過 HttpClient 以及 HttpGet 連線到伺服器取得資料。

但是每當執行到 HttpClient 的 execute() 方法的時候,就會產生錯誤的例外處理,例外處理的 printStackTrace() ,因為文章本身限制,列印資訊放在本文的補充。

我有在 AndroidManifest.xml 下加入存取網路的權限:
<uses-permission android:name="android.permission.INTERNET"/>

以我的主程式碼 (MainActivity.java ,因文章長度限制,放在本文的補充) 來說,Activity 在模擬器 會顯示 "Android Running!",當按下按鍵觸發
OnClick()的時候會顯示 "OnClick!" , 在 try{}..catch{}..finally() 中的 "Success" 和 "Error" 和 "HttpClient Shutdown" 都沒被列印出來

感覺上好像是執行到 HttpClient 的 execute() 方法的時候 , 有關於 Activity 上的控制項的顯示部分都不會動作。

有人知道問題出在哪嗎?

感謝回應。

外獅佬 iT邦大師 1 級 ‧ 2014-08-25 08:55:06 檢舉
@Override
protected String onPostExecute(Void result) {
    super.onPostExecute(result);
}

@Override
protected void onPreExecute() {
    super.onPreExecute();
}

@Override
protected String doInBackground(String... params) {
  try
  {
  HttpClient httpclient = new DefaultHttpClient();
  httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 6000);
  httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000);
        		
    try
    {
      HttpGet method = new HttpGet("http://www.cheer-live.com/Test/BbsApp/HelloAndroid.html");
      HttpResponse response = httpclient.execute(method);
      mTextView01.setText("Success");
    }catch(Exception e)
    {
      e.printStackTrace();
      mTextView01.setText("Error");
    }
    finally
    {
      httpclient.getConnectionManager().shutdown();
      mTextView01.setText("HttpClient Shutdown");
    }
  }
}

1 個回答

0
外獅佬
iT邦大師 1 級 ‧ 2014-08-25 08:46:27
最佳解答

我要發表回答

立即登入回答