android登录凌空错误

时间:2017-03-23 03:15:17

标签: android login android-volley

我正在使用android hive的volley进行android登录教程。但是当我尝试它时,它将会出现凌空错误,我不知道为什么,我只是android的初学者。请帮我。 。我在模拟器中运行我的项目并使用USB调试连接它。我的模拟器是NOX。

我已经从数据库中完成了设置。

登录后,我想设想我的Dashboard课程,但它没有意图,它与下面的这些错误相关

以下是出现错误的代码:

public void onErrorResponse(VolleyError error) {
                //Log.e(TAG, "Login Error: " + error.getMessage());
                Toast.makeText(Login.this,
                        "VOLLEY ERROR", Toast.LENGTH_LONG).show();
                hideDialog();
            }

并且该类的完整代码是这个类:

package com.example.codeboxjohn.clinic.activity;

import android.app.ProgressDialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;


import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.example.codeboxjohn.clinic.R;
import com.example.codeboxjohn.clinic.app.AppConfig;
import com.example.codeboxjohn.clinic.app.AppController;
import com.example.codeboxjohn.clinic.helper.SessionManager;

import org.json.JSONException;
import org.json.JSONObject;

import java.util.HashMap;
import java.util.Map;


public class Login extends AppCompatActivity {

    private Button btnLogin;
    private EditText inputUsername;
    private EditText inputPassword;
    private ProgressDialog pDialog;
    private SessionManager session;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login);
        btnLogin = (Button)findViewById(R.id.btnLogin);
        inputUsername = (EditText) findViewById(R.id.editTextUsername);
        inputPassword = (EditText) findViewById(R.id.editTextPassword);

        pDialog = new ProgressDialog(this);
        pDialog.setCancelable(false);

        //login
        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String username = inputUsername.getText().toString().trim();
                String password = inputPassword.getText().toString().trim();

                if(!username.isEmpty() && !password.isEmpty()) {
                    checkLogin(username, password);
                } else {
                    Toast.makeText(getApplicationContext(),"Please enter the credentials!", Toast.LENGTH_SHORT).show();
                }
            }
        });
    }

    private void checkLogin(final String username, final String password) {
        //Tag used to cancel the request
        String tag_string_req = "req_login";

        pDialog.setMessage("Logging in..");
        showDialog();

        StringRequest strReq = new StringRequest(Request.Method.POST,
                AppConfig.URL_LOGIN, new Response.Listener<String>() {

            @Override
            public void onResponse(String response) {
                //Log.d(TAG, "Login Response: " + response.toString());
                hideDialog();

                try {
                    JSONObject jObj = new JSONObject(response);
                    boolean error = jObj.getBoolean("error");

                    // Check for error node in json
                    if (!error) {
                        // user successfully logged in
                        // Create login session
                        session.setLogin(true);

                        // Inserting row in users table

                        // Launch main activity
                        Intent intent = new Intent(Login.this,
                                Dashboard.class);
                        startActivity(intent);
                        finish();
                    } else {
                        // Error in login. Get the error message
                        String errorMsg = jObj.getString("error_msg");
                        Toast.makeText(getApplicationContext(),
                                "ERROR KO", Toast.LENGTH_LONG).show();
                    }
                } catch (JSONException e) {
                    // JSON error
                    e.printStackTrace();
                    Toast.makeText(getApplicationContext(), "Json error: " + response.toString(), Toast.LENGTH_LONG).show();
                }

            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                //Log.e(TAG, "Login Error: " + error.getMessage());
                Toast.makeText(Login.this,
                        "VOLLEY ERROR", Toast.LENGTH_LONG).show();
                hideDialog();
            }
        }) {

            @Override
            protected Map<String, String> getParams() {
                // Posting parameters to login url
                Map<String, String> params = new HashMap<String, String>();
                params.put("username", username);
                params.put("password", password);

                return params;
            }

        };

        // Adding request to request queue
        AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
    }

    private void showDialog() {
        if(!pDialog.isShowing())
                pDialog.show();
    }

    private void hideDialog() {
        if(pDialog.isShowing())
            pDialog.dismiss();
    }

}

1 个答案:

答案 0 :(得分:0)

根据您发布的代码,

    StringRequest strReq = new StringRequest(Request.Method.POST,
            AppConfig.URL_LOGIN, new Response.Listener<String>() {

我可以看到您没有将任何请求参数(用户名和密码)传递给网址。

由于它是POST请求,因此需要请求。传递请求对象,您将获得正确的输出。

由于