Android HttpGet:在执行请求之前应该检查哪些异常?
更新: 更新结束 我正在构建一个从网站读取数据的应用程序,我想知道在执行请求之前应该检查哪些异常 我想到的例外情况是:Android HttpGet:在执行请求之前应该检查哪些异常?,android,Android,更新: 更新结束 我正在构建一个从网站读取数据的应用程序,我想知道在执行请求之前应该检查哪些异常 我想到的例外情况是: String xmlList = null; // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); try { HttpGet request = new HttpGet(U
String xmlList = null;
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
try {
HttpGet request = new HttpGet(URL);
HttpResponse response = null;
response = httpClient.execute(request);
//HttpResponse httpResponse = httpClient.execute(request);
HttpEntity httpEntity = response.getEntity();
xmlList = EntityUtils.toString(httpEntity);
}
catch (MalformedURLException e) {
xmlList = "URL: is a malformed URL";
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
xmlList = "URL: UnsupportedEncodingException";
} catch (ClientProtocolException e) {
e.printStackTrace();
xmlList = "URL: ClientProtocolException";
} catch (SocketTimeoutException e) {
e.printStackTrace();
xmlList = "URL: SocketTimeoutException";
} catch (ConnectTimeoutException e) {
e.printStackTrace();
xmlList = "URL: ConnectTimeoutException";
} catch (IOException e) {
xmlList = "URL: IOException";
e.printStackTrace();
}
finally {
httpClient.getConnectionManager().shutdown();
}
// return XML
return xmlList;
这是我的密码:
1) bad url
2) host not responding
3) time out
....
....
您可以检查是否有,如果没有,向用户显示一条消息,说明无论应用尝试什么都是不可能的。
但是不需要进一步检查,因为您可以看到从查询结果中得到的信息:异常(例如错误的url、超时等)、状态代码等。您可以执行以下检查
您可以在发送请求之前进行网络连接检查。详细信息见zapl帖子中提供的链接。在发出请求之前,您如何检查主机是否没有响应(这与超时有何区别?您认为主机没有响应,超时时间相同,没有想到:)我更新了我的问题,这是捕捉异常的正确方法吗?捕捉的次数很多,但看起来很好。只有当你想在每种情况下单独做不同的事情时,你才需要抓住它们。我假设您想告诉用户请求失败的确切原因。在这种情况下,这看起来不错。:)
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet request = new HttpGet(SongsManager1.URL);
HttpResponse response = null;
response = httpClient.execute(request);
//HttpResponse httpResponse = httpClient.execute(request);
HttpEntity httpEntity = response.getEntity();
xmlList = EntityUtils.toString(httpEntity);