0

私はアプリを実装しています.Webサービスにアクセスしてユーザーを検証しますが、問題があります.Webサービスはテストしたとおりに機能しましたが、ログインするために電子メールとパスワードを入力するたびに、アプリケーションが壊れます.

アクティビティ

package com.inform.edufindme.activity;
import com.inform.edufindme.R;
import com.inform.edufindme.task.ValidarUsuarioTask;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.widget.Button;
import android.widget.EditText;
import android.view.View;


public class LoginActivity extends Activity {


Button button_login;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    button_login = (Button)findViewById(R.id.button_login);
    button_login.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            EditText editTextLogin = (EditText)findViewById(R.id.edit_text_email);
            EditText editTextSenha = (EditText)findViewById(R.id.edit_text_senha);

            //new ValidarUsuarioTask(LoginActivity.this).execute("vilker","12345");
            new ValidarUsuarioTask(LoginActivity.this).execute(editTextLogin.getText().toString(),editTextSenha.getText().toString());
        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.login, menu);
    return true;
}

}

仕事

package com.inform.edufindme.task;
import java.io.IOException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.inform.edufindme.activity.EduMailActivity;
import com.inform.edufindme.activity.LoginActivity;
import com.inform.edufindme.utils.ConfiguracaoServidor;
import com.inform.edufindme.utils.ConverterStream;
import android.content.Context;
import android.content.Intent;
import android.os.AsyncTask;

public class ValidarUsuarioTask extends AsyncTask<String, Void, HttpResponse>{

private String recurso = "Validar_Usuario/Usuario/";
private Context contexto;


public ValidarUsuarioTask(Context contexto) {
    this.contexto = contexto;
}

@Override
protected HttpResponse doInBackground(String... params) {
    String email = params[0];
    String senha = params[1];
    return autenticarUsuario(email, senha);
}

@Override
protected void onPostExecute(HttpResponse response) {
    HttpEntity entity = response.getEntity();
    Integer statusAutenticacao;
    String conteudoRequisicao = "";

    try {
        conteudoRequisicao = ConverterStream.convertInputStreamToString(entity.getContent());
    }catch (Exception e) {
        e.printStackTrace();
    }
    statusAutenticacao = getStatusValidacao(conteudoRequisicao);

    if(statusAutenticacao.equals(0)){
        Intent intent = new Intent(contexto, EduMailActivity.class);
        contexto.startActivity(intent);
    }else{
        Intent intent = new Intent(contexto, EduMailActivity.class);
        contexto.startActivity(intent);
    }
}

private HttpResponse autenticarUsuario(String email, String senha) {
    HttpClient httpclient = new DefaultHttpClient();
    HttpGet httpget = new HttpGet(ConfiguracaoServidor.getInstancia().getURL()+recurso+email+"/"+senha);

    HttpResponse response = null;
    try {
        response = httpclient.execute(httpget);
    } catch (IOException e) {
        System.out.println(e);
    }

    return response;

}

private Integer getStatusValidacao(String conteudo){
    JSONArray result;
    JSONObject validacao;
    Integer statusValidacao = 0;

    try {
        result = new JSONObject(conteudo).getJSONArray("result");
        validacao = (JSONObject)result.get(0);
        statusValidacao = validacao.getInt("VALIDACAO");
    } catch (JSONException e) {
        e.printStackTrace();
    }

    return statusValidacao;

}

}

サーバー構成

package com.inform.edufindme.utils;
public class ConfiguracaoServidor {

    private  String server = "172.20.10.9";
    private  String port = "2000";

    private static ConfiguracaoServidor instancia = new ConfiguracaoServidor();

    private ConfiguracaoServidor() {
        super();
    }

    public static ConfiguracaoServidor getInstancia() {
        return instancia;
    }

    public String getURL(){

        return new StringBuilder().append("http://").append(server).append(":").append(port).append("/").toString();
    }

}

LogCat

10-21 23:42:43.121: W/dalvikvm(1459): threadid=1: thread exiting with uncaught exception (group=0x414c4700)
10-21 23:42:43.141: E/AndroidRuntime(1459): FATAL EXCEPTION: main
10-21 23:42:43.141: E/AndroidRuntime(1459): java.lang.NullPointerException
10-21 23:42:43.141: E/AndroidRuntime(1459):     at com.inform.edufindme.task.ValidarUsuarioTask.onPostExecute(ValidarUsuarioTask.java:42)
10-21 23:42:43.141: E/AndroidRuntime(1459):     at com.inform.edufindme.task.ValidarUsuarioTask.onPostExecute(ValidarUsuarioTask.java:1)
10-21 23:42:43.141: E/AndroidRuntime(1459):     at android.os.AsyncTask.finish(AsyncTask.java:631)
10-21 23:42:43.141: E/AndroidRuntime(1459):     at android.os.AsyncTask.access$600(AsyncTask.java:177)
10-21 23:42:43.141: E/AndroidRuntime(1459):     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
10-21 23:42:43.141: E/AndroidRuntime(1459):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-21 23:42:43.141: E/AndroidRuntime(1459):     at android.os.Looper.loop(Looper.java:137)
10-21 23:42:43.141: E/AndroidRuntime(1459):     at android.app.ActivityThread.main(ActivityThread.java:5103)
10-21 23:42:43.141: E/AndroidRuntime(1459):     at java.lang.reflect.Method.invokeNative(Native Method)
10-21 23:42:43.141: E/AndroidRuntime(1459):     at java.lang.reflect.Method.invoke(Method.java:525)
10-21 23:42:43.141: E/AndroidRuntime(1459):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
10-21 23:42:43.141: E/AndroidRuntime(1459):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
10-21 23:42:43.141: E/AndroidRuntime(1459):     at dalvik.system.NativeStart.main(Native Method)
4

1 に答える 1

0

The reason your code is failing is because response.getEntity() is returning null. You should check for null before accessing the entity. As to why it is returning null, try checking the status code.

于 2013-10-22T05:10:46.313 に答える