我的Android应用程序确实将http发布到诸如http://example.com/abc.php?email=abc@xyz.com 之类的URL,因此,Android应用程序基本上是与服务器端的PHP进行对话,并接收JSON响应并解析它们以填充各种内容。应用中的观看次数。工作良好。
我的问题是-我应该如何处理Android应用程序中的以下事件,以便万一这些事件在服务器端应用程序中发生,该应用程序不应像现在这样强制关闭。
服务器超时发生,并且没有收到响应。App强制现已关闭。我想适当地处理。
作为对应用程序HTTP发布到服务器的响应而返回的错误代码。由于我尚未处理,App Force目前关闭。
我遇到了这两种情况,其中应用程序未编码为处理这些事件。请随时添加可能导致ANR在Android App中发生的任何其他事件。
一点代码段或线索对我有很大帮助,因为我以前从未做过。
谢谢。
到目前为止还添加了非常好的建议…
我的工作伙伴教我如何使用org.apache.http包中的类,如下所示:
String result = null; HttpGet request = new HttpGet(some_uri); // As Jeff Sharkey does in the android-sky example, // use request.setHeader to optionally set the User-Agent header. HttpParams httpParams = new BasicHttpParams(); int some_reasonable_timeout = (int) (30 * DateUtils.SECOND_IN_MILLIS); HttpConnectionParams.setConnectionTimeout(httpParams, some_reasonable_timeout); HttpConnectionParams.setSoTimeout(httpParams, some_reasonable_timeout); HttpClient client = new DefaultHttpClient(httpParams); try { HttpResponse response = client.execute(request); StatusLine status = response.getStatusLine(); if (status.getStatusCode() == HttpStatus.SC_OK) { ResponseHandler<String> responseHandler = new BasicResponseHandler(); result = responseHandler.handleResponse(response); } else { // Do something else, if wanted. } } catch (ClientProtocolException e) { Log.e(LOG_TAG, "HTTP Error", e); // Do something else, if wanted. } catch (IOException e) { Log.e(LOG_TAG, "Connection Error", e); // Do something else, if wanted. } finally { client.getConnectionManager().shutdown(); } // Further parse result, which may well be JSON.