2

我不知道如何从我拥有的扩展 AsyncTask 的 GetLogin 类中检索值。这是我的代码:

public class GetLogin extends AsyncTask<String, Void, String> {

private final HttpClient httpclient = new DefaultHttpClient();

final HttpParams params = httpclient.getParams();
HttpResponse response;
private String content =  null;
private Context mContext;

public GetLogin(Context context){

    this.mContext = context;

}

protected String doInBackground(String... urls) {

    String result = null;

    try {

        DefaultHttpClient httpClient=new DefaultHttpClient();

        Log.e("Tag", "url: " + urls[0]);

        //Connect to the server
        HttpGet httpGet = new HttpGet(urls[0].toString());

        //Get the response
        HttpResponse httpResponse = httpClient.execute(httpGet);
        HttpEntity httpEntity = httpResponse.getEntity();
        InputStream stream = httpEntity.getContent();

        //Convert the stream to readable format
        result = convertStreamToString(stream);
        Log.e("Tag", "Result: " + result);

        if (result.charAt(1)=='1') {
            return "Login Successful";
        } if (result.charAt(1)=='0') {
            return "Login Failed";
        } else {
            return result.toString();
        }

  //  } catch (ClientProtocolException e) {
  //      Log.w("HTTP2:",e );
 //       content = e.getMessage();
  //      cancel(true);
  //      return "Could not connect to Server";
   //     
   // } catch (IOException e) {
   //     Log.w("HTTP3:",e );
   //     content = e.getMessage();
   //     cancel(true);
   //     return "Could not connect to Server";

    }catch (Exception e) {
        Log.w("HTTP4:",e );
        content = e.getMessage();
        cancel(true);
        return "Could not connect to Server";
    }
}

public static String convertStreamToString(InputStream is) 
{
    BufferedReader reader = new BufferedReader(new InputStreamReader(is));
    StringBuilder sb = new StringBuilder();

    String line = null;
    try {
        while ((line = reader.readLine()) != null) {
            sb.append(line + "\n");
        }
    } 
    catch (IOException e) {
        e.printStackTrace();
    } 
    finally {
        try {
            is.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    return sb.toString();
}

}

这是登录活动的代码

    String url = "http://192.168.1.107:6972/evalservice/checkLogin?name="+tvUsername.getText()+"&pass="+tvPassword.getText();
    new GetLogin(LoginActivity.this).execute(url);

我想做的是放一个 if 语句来查看登录是否成功,如果是,则继续下一个活动

4

1 回答 1

2

我想做的是放一个 if 语句来查看登录是否成功,如果是,则继续下一个活动

无论您返回什么,doInBackground(...)都将传递onPostExecute(...)AsyncTask. 只需检查该方法中的结果,如果成功,让它启动下一个Activityfinish()当前一个。

于 2012-11-28T01:37:41.163 回答