Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.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
Java 在Android中从Asynctask返回布尔值_Java_Android_Android Asynctask_Status - Fatal编程技术网

Java 在Android中从Asynctask返回布尔值

Java 在Android中从Asynctask返回布尔值,java,android,android-asynctask,status,Java,Android,Android Asynctask,Status,我是android新手。我要做的就是将一个URL传递给Asynctask,然后检查返回的状态码SC_是否正常。如果返回状态代码SC_OK,则该方法应返回true;如果返回任何其他状态代码,则该方法应返回false class checking extends AsyncTask<String, Void, Boolean> { @Override protected Boolean doInBackground(String... params) {

我是android新手。我要做的就是将一个URL传递给Asynctask,然后检查返回的状态码SC_是否正常。如果返回状态代码SC_OK,则该方法应返回true;如果返回任何其他状态代码,则该方法应返回false

class checking extends AsyncTask<String, Void, Boolean> {

    @Override
    protected Boolean doInBackground(String... params) {
        // TODO Auto-generated method stub
        Boolean a;
        HttpClient client = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(l1);      
        HttpResponse response;
        try {
            response = client.execute(httpGet);
            StatusLine statusLine = response.getStatusLine();
            int statusCode = statusLine.getStatusCode();
            if (statusCode != HttpStatus.SC_OK) {                                   
                Toast.makeText(getApplicationContext(),"No", Toast.LENGTH_LONG).show();
                a= false;
            }
            else {
                Toast.makeText(getApplicationContext(),"Yes", Toast.LENGTH_LONG).show();
                a= true; 
            }
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        finally{
            return false;
        }              
    }

    @Override
    protected void onPostExecute(Boolean result) {

    }
}
类检查扩展了异步任务{
@凌驾
受保护的布尔doInBackground(字符串…参数){
//TODO自动生成的方法存根
布尔a;
HttpClient=new DefaultHttpClient();
HttpGet HttpGet=新的HttpGet(l1);
HttpResponse响应;
试一试{
response=client.execute(httpGet);
StatusLine StatusLine=response.getStatusLine();
int statusCode=statusLine.getStatusCode();
如果(statusCode!=HttpStatus.SC_OK){
Toast.makeText(getApplicationContext(),“No”,Toast.LENGTH_LONG.show();
a=假;
}
否则{
Toast.makeText(getApplicationContext(),“是”,Toast.LENGTH_LONG.show();
a=真;
}
}捕获(客户端协议例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
最后{
返回false;
}              
}
@凌驾
受保护的void onPostExecute(布尔结果){
}
}
将整个内容更改为(盲编码):

类检查扩展了异步任务{
@凌驾
受保护的布尔doInBackground(字符串…参数){
//TODO自动生成的方法存根
布尔a;
HttpClient=new DefaultHttpClient();
HttpGet HttpGet=新的HttpGet(l1);
HttpResponse响应;
试一试{
response=client.execute(httpGet);
StatusLine StatusLine=response.getStatusLine();
int statusCode=statusLine.getStatusCode();
if(statusCode!=HttpStatus.SC\u OK){
a=假;
}否则{
a=真;
}
返回a;
}捕获(客户端协议例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}捕获(IOE异常){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
返回false;
}
@凌驾
受保护的void onPostExecute(布尔结果){
Toast.makeText(getApplicationContext(),(结果?“是”:“否”),Toast.LENGTH\u LONG.show();
}
}

您正在将本地布尔值
a
设置为
true
,但从未返回该值。正如所写的那样,该方法将始终返回
false

,有什么问题吗?最后总是调用
块,因此您将始终返回false。也许您想删除此块并添加一个返回;最后?不起作用,但现在工作正常。
class checking extends AsyncTask<String, Void, Boolean> {
    @Override
    protected Boolean doInBackground(String... params) {
        // TODO Auto-generated method stub
        Boolean a;
        HttpClient client = new DefaultHttpClient();
        HttpGet httpGet = new HttpGet(l1);
        HttpResponse response;
        try {
            response = client.execute(httpGet);
            StatusLine statusLine = response.getStatusLine();
            int statusCode = statusLine.getStatusCode();
            if (statusCode != HttpStatus.SC_OK) {
                a = false;
            } else {
                a = true;
            }
            return a;
        } catch (ClientProtocolException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return false;
    }
    @Override
    protected void onPostExecute(Boolean result) {
        Toast.makeText(getApplicationContext(), (result ? "Yes" : "No"), Toast.LENGTH_LONG).show();
    }
}