#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/simple2. @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");
}
});
Надеюсь, одно из этих решений сработает для вас 🙂
Лучшие