你好,我的 開發環境:
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 上的控制項的顯示部分都不會動作。
有人知道問題出在哪嗎?
感謝回應。
@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");
    }
  }
}
                    what you need is async task....
http://developer.android.com/reference/android/os/AsyncTask.html