Метод получения для конкретного входа в систему

#java #android

#java #Android

Вопрос:

Что я пытаюсь сделать, так это когда пользователь вводит адрес электронной почты и пароль, я хочу проверить это и на основе сообщения об успешном завершении хочу напечатать success, message и hash в Toast.maketext. Мой URL для входа в систему:https://www.digitalis.ba/korisnik2/android-getResult.php?a=login И для целей тестирования электронная почта должна быть равна a@a.ba и пароль 12345, поэтому, когда вы меняете ссылку на:https://www.digitalis.ba/korisnik2/android-getResult.php?a=loginamp;email=a@a.baamp;pw=12345 вы получаете успех = 1.

Пока у меня есть этот код, и я не знаю, где зарегистрировать кнопку, мне делать это в onCreate или setOnClickListener или doInBackgroung

 String data ="";
     String dataParsed = "";
    String singleParsed ="";
   EditText emailText = (EditText) findViewById(R.id.editText);
   EditText passwordText = (EditText) findViewById(R.id.editText2);
   String MAIN_URL = "https://www.digitalis.ba/korisnik2/android-getResult.php";
    String LOGIN_URL = "https://www.digitalis.ba/korisnik2/android-getResult.php?a=login";
    Button loginButton = (Button) findViewById(R.id.button);

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

        loginButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String email = emailText.getEditableText().toString().trim();
                String password = passwordText.getEditableText().toString().trim();


            }
        });
  

Комментарии:

1. Посмотрите на Volley : developer.android.com/training/volley/simple

2. @Maxouille уже пробовал, даже перепробовал несколько руководств, но не получается, что a должно быть равно login.

3. Можете ли вы опубликовать свой код? Какие данные вы собираете? Я не совсем понимаю, что вы пытаетесь сделать.

4. @Maxouille если я введу этот URL: » digitalis.ba/korisnik2/android-getResult.php «это недопустимо, но этот «просмотр-исходный код: digitalis.ba/korisnik2 / … «отправляет сообщение об успешном завершении, как я могу выполнить вход, если адрес электронной почты равен a@a.ba и pw = 12345 программно зависели от некоторых других учетных данных. Теперь ты что-нибудь понимаешь xD?

5. Опубликуйте написанный вами код.

Ответ №1:

Ответ, который вы получили от https://www.digitalis.ba/korisnik2/android-getResult.php?a=loginamp;email=a@a.baamp;pw=12345 это JSONObject, который выглядит следующим образом :

 {
  "success":1,
  "message":"",
  "hash":"askojgfiouw8ursaj"
}
  

Насколько я понимаю, вы хотите проверить, верны ли учетные данные пользователя для входа, вызвав сервер по адресу https://www.digitalis.ba/korisnik2/android-getResult.php?a=login и добавление данных в качестве параметров.

Для этого вам нужен HTTP POST запрос. Вот как это должно быть сделано. HTTP GET Запрос работает, и я покажу вам это в конце поста.

Используя библиотеку Volley, вы можете легко отправлять HTTP-запросы. Ниже приведен код вашего OnClickListener:

 loginButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String email = emailText.getEditableText().toString().trim();
        String password = passwordText.getEditableText().toString().trim();
        
        // Create a JSONObject for adding parameters to the POST Request
        JSONObject postparams = new JSONObject();
        postparams.put("email", email);
        postparams.put("pw", password);
            
        // Creating the post request object
        JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.POST, MAIN_URL, postparams,
            new Response.Listener() {
                @Override
                public void onResponse(JSONObject response) {
                    //Success Callback
                    successValue = response.getInt("success");
                    if (successValue == "1") {
                        Log.d("TAG", "Logged in succesfully");
                        // DO YOUR STUFF
                    }
                    else {
                        Log.d("TAG", "Login failed: Wrong email or password");
                        // DO YOUR OTHER STUFF
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {
                    //Failure Callback
                    Log.d("TAG", "Error posting request: " error.toString());
                }
            });

        // Adding the request to the queue along with a unique string tag
        MyApplication.getInstance().addToRequestQueue(jsonObjectReq, "postRequest");       
    }
});
  

С HTTP GET запросом это работает, но вы должны объединить свой URL самостоятельно:

 loginButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        String email = emailText.getEditableText().toString().trim();
        String password = passwordText.getEditableText().toString().trim();
                
        LOGIN_URL = String.format("%samp;email=%samp;pw=%s", LOGIN_URL, email, password);
          
        JsonObjectRequest jsonObjReq = new JsonObjectRequest(Request.Method.GET, LOGIN_URL, null, new Response.Listener() {
            @Override
            public void onResponse(JSONObject response) {
                //Success Callback
                successValue = response.getInt("success");
                if (successValue == "1") {
                    Log.d("TAG", "Logged in succesfully");
                    // DO YOUR STUFF
                }
            }
        },
        new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                //Failure Callback
                Log.d("TAG", "Login failed: Wrong email or password");
                // DO YOUR OTHER STUFF
            }
        });

        // Adding the request to the queue along with a unique string tag
        MyApplication.getInstance().addToRequestQueue(jsonObjectReq, "getRequest");
    }
});
  

Надеюсь, одно из этих решений сработает для вас 🙂

Лучшие