当HTTPPost失败时取消AsyncTask



当连接到服务器失败时,我试图取消我的AsyncTask。我尝试了cancel(),但onPostExecute()方法仍然被调用,而不是onCancelled()

这是我在doInBackground()中的内容:

    protected String doInBackground(String... params) {
        Log.i("ping", "doInBackground() started");
        DefaultHttpClient client = new DefaultHttpClient();
        HttpConnectionParams.setConnectionTimeout(client.getParams(), 15000);
        HttpResponse response;
        HttpEntity entity;
            try {
                HttpPost post = new HttpPost("http://192.168.1.6/ping/login.php");
                List<NameValuePair> nvps = new ArrayList<NameValuePair>();
                nvps.add(new BasicNameValuePair("username", getEmail()));
                nvps.add(new BasicNameValuePair("password", getPassword()));
                post.setHeader("Content-Type", "application/x-www-form-urlencoded");
                post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
                response = client.execute(post);
                entity = response.getEntity();
                InputStream iStream = entity.getContent();
                read(iStream);
                iStream.close();
                if(entity != null)
                    entity.consumeContent();
                Log.i("ping", "doInBackground() vervolgd");

            } catch (Exception e) {
                e.printStackTrace();
                Log.e("tvsping", "Exception: " + e.getMessage());
                cancel(true);
            }
        return null;
    }

我想看看当服务器无法到达时会发生什么(我正在关闭它,所以我的手机没有办法得到任何响应),我得到IOException: the connection was reset

有什么想法我应该如何检查连接是否没有建立?

我像Tanmay建议的那样,用一个布尔值解决了这个问题。但我还有另一个问题:每次doInBackground()被调用时,当它找不到服务器时,大约需要三分钟才能停止。当它可以到达服务器时一切都很好,但我不能在用户收到任何通知之前花费3分钟(我可以做一个后台进程,但仍然是3分钟等待条也不好)

谁知道我的代码有什么问题?这不可能是正常的,对吧?

doInBackground()方法返回String,如果HTTPPost失败,您可以返回null。然后在onPostExecute()方法中检查你得到了什么,如果String为空不要做任何你真正想做的事情在成功运行时做你的UI工作

HttpHost target = new HttpHost("192.168.2.3", 80);
HttpPost post = new HttpPost("/ping/login.php");
response = client.execute(target, post);

这为我解决了缓慢的服务器响应

相关内容

  • 没有找到相关文章

最新更新