Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android在连接时在Web服务中显示超时消息,或在连接internet时读取超时_Android_Web Services_Connection Timeout - Fatal编程技术网

Android在连接时在Web服务中显示超时消息,或在连接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() {

嗨,我需要在连接或读取超时时显示消息“未收到数据”

我使用java.net.SocketTimeoutException实现了这一点,但如果在连接internet时没有收到数据,则无法获取消息

我只能通过互联网获得帮助,无论是否连接

但实际上,我想在互联网连接的时候得到它

互联网连接测试代码 用于显示土司:

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();
                }
            });
}