Android在连接时在Web服务中显示超时消息,或在连接internet时读取超时
嗨,我需要在连接或读取超时时显示消息“未收到数据” 我使用java.net.SocketTimeoutException实现了这一点,但如果在连接internet时没有收到数据,则无法获取消息 我只能通过互联网获得帮助,无论是否连接 但实际上,我想在互联网连接的时候得到它 互联网连接测试代码 用于显示土司:Android在连接时在Web服务中显示超时消息,或在连接internet时读取超时,android,web-services,connection-timeout,Android,Web Services,Connection Timeout,嗨,我需要在连接或读取超时时显示消息“未收到数据” 我使用java.net.SocketTimeoutException实现了这一点,但如果在连接internet时没有收到数据,则无法获取消息 我只能通过互联网获得帮助,无论是否连接 但实际上,我想在互联网连接的时候得到它 互联网连接测试代码 用于显示土司: catch (java.net.SocketTimeoutException e) { runOnUiThread(new Runnable() {
catch (java.net.SocketTimeoutException e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context, "Network Error : No Data Received.", Toast.LENGTH_SHORT).show();
}
});
}
catch (Exception e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context,e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
请删除这些行,然后重试。httpConnection.setReadTimeout(10000);httpConnection.setConnectTimeout(15000);你可以用截击。截击可以很容易地处理此类问题。@ZahidulIslam是使用截击更好那么它如何确定何时超时并捕获异常???异常未被捕获ok。但是,当出现读取或连接超时时,您会得到什么??应用程序崩溃??如果是,请粘贴日志。如果java.net.SocketTimeoutException未捕获异常,则此代码如何工作。我仅使用启用wifi而不连接internet来测试此代码,因此连接未在超时内到达,因此应显示“未收到数据”消息。。。但我没有明白。这一条下面还有一条条款。异常将被它捕获。请尝试在下面的catch子句中打印相同的异常。我认为没有引发SocketTimeOut。异常被另一个异常块捕获并在那里抛出未知主机错误。这意味着它不是超时异常。您的URL有问题。通过将其加载到浏览器进行检查。
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
String result = "";
try {
URL url = new URL(params[0]);
httpConnection = (HttpURLConnection) url.openConnection();
httpConnection.setRequestProperty("Accept", "application/json");
httpConnection.setReadTimeout(10000);
httpConnection.setConnectTimeout(15000);
httpConnection.setRequestMethod("POST");
httpConnection.setDoInput(true);
httpConnection.setDoOutput(true);
OutputStream os = httpConnection.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(String.valueOf(values));
writer.flush();
writer.close();
os.close();
int responseCode = httpConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream iStream = httpConnection.getInputStream();
InputStreamReader isReader = new InputStreamReader(iStream);
BufferedReader br = new BufferedReader(isReader);
String line;
while ((line = br.readLine()) != null) {
result += line;
}
}
} catch (java.net.SocketTimeoutException e) {
Toast.makeText(context, "Network Error : No Data Received.", Toast.LENGTH_SHORT).show();
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
Log.e("Error : ", e.toString());
}
return result;
}
catch (java.net.SocketTimeoutException e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context, "Network Error : No Data Received.", Toast.LENGTH_SHORT).show();
}
});
}
catch (Exception e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context,e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}