我正在使用與安裝在智能手機上的我的android應用進行通信的服務器。該應用程序正在本地環境中使用,它使用計算機的本地IP通過WiFi與Apache服務器進行通信。如何知道連接未建立到服務器?
問題是本地ips會不時發生變化,當這種情況發生幾次之後,由於操作超時,應用程序因爲某個NullPointer異常而崩潰。所以我想知道是否有辦法,要知道連接到服務器的時間不成功,並且如果有辦法(在確認操作超時之後)採取一些措施,以便應用程序不會凍結。
日Thnx提前
我這個用戶代碼來連接:
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
JSONObject jo = new JSONObject();
jo.put("tag",tag);
// Prepare JSON to send by setting the entity
httpPost.setEntity(new StringEntity(jo.toString(), "UTF-8"));
// Set up the header types needed to properly transfer JSON
httpPost.setHeader("Content-Type", "application/json");
httpPost.setHeader("Accept-Encoding", "application/json");
httpPost.setHeader("Accept-Language", "en-US");
HttpResponse response = httpClient.execute(httpPost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
而從這個最後返回一個JSONObject,這事後我分析得到我所需要的。
我已經使用了異步任務,我連接代碼,在一個單獨的文件上實現。我想你正試圖給我一種處理錯誤的方法,但我想我不明白這是怎麼回事。我的主要問題是,我用什麼對象來處理超時狀態,以便我可以操縱它。 – user1732457
對於每種類型的異常都有一個原因,對於ConnectTimeoutException意味着連接到服務器的嘗試超時。並且對於SocketTimeoutException表示與服務器的連接超時。我已經更新了代碼,以便在失敗的情況下返回錯誤代碼,現在當您發現錯誤是由於超時造成的,然後執行額外的代碼,例如重試連接。 –