你好,我的 開發環境:
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