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(...)AsyncTaskActivityfinish()

于 2012-11-28T01:37:41.163 に答える