Как сравнить 3 переменные (equalsIgnoreCase), извлеченные из веб-служб? - PullRequest
0 голосов
/ 23 мая 2018

Я провел несколько дней, пытаясь открыть для себя волейбол, и, наконец, мне удалось найти способы использования Method.POST.Я использую equalsIgnoreCase для создания логина.Мои веб-службы возвращают строку с 3 параметрами.

Состояние - данные - сообщение

 {"state":"success","data":{"nombre":"user1","email":"user1@gmail.com","cod_user":"8"},"message":"The session was started correctly!"}

Я вижу несколько примеров, он работает только с одним параметром, как, например,"успех"

    private void login() {

    if (!validate()) return;

    progress = new ProgressDialog(this);
    progress.setMessage("Starting...");
    progress.show();
    String url = Connection.URL_WEB_SERVICE +"login.php";

    stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String response) {
            User userParcelable = new User();;
            Log.i("ANSWER JSON: ",""+response);
            try {
                JSONObject jsonObject = new JSONObject(response);
                if(jsonObject.names().get(0).equals("success")){

                    email.setText("");
                    password.setText("");

                    userParcelable.setId(jsonObject.getJSONArray("user").getJSONObject(0).getInt("code"));
                    userParcelable.setEmail(jsonObject.getJSONArray("user").getJSONObject(0).getString("email"));
                    userParcelable.setName(jsonObject.getJSONArray("user").getJSONObject(0).getString("name"));

                    Toast.makeText(getApplicationContext(),jsonObject.getString("success"), Toast.LENGTH_SHORT).show();
                    progreso.dismiss();

                    Intent intent = new Intent(getApplicationContext(),MainActivity.class);
                    intent.putExtra("DATA_USER",userParcelable);
                    startActivity(intent);
                    finish();
                }else{
                    Toast.makeText(getApplicationContext(),jsonObject.getString("error"), Toast.LENGTH_SHORT).show();
                    Log.i("RESPUESTA JSON: ",""+jsonObject.getString("error"));
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }

Надеюсь, вы меня немного сориентируете, спасибо за потраченное время.

1 Ответ

0 голосов
/ 23 мая 2018

, если вы просто хотите проверить наличие параметра в вашем отклике объекта json, вы можете использовать метод has, который вернет true только если атрибут присутствует в объекте, например

// && mean every condition should be true
if(jsonObject.has("success") && jsonObject.has("data") && 
      jsonObject.has("message") ){

Здесь есть другие проблемы

userParcelable.setId(jsonObject.getJSONArray("user").getJSONObject(0).getInt("code"));

В вашем коде нет jsonarray, поэтому приведенный выше код вызовет сбой, поэтому используйте этот

userParcelable.setId(jsonObject.getJSONObject("data").optLong("cod_user"));
userParcelable.setEmail(jsonObject.getJSONObject("data").optString("email"));
userParcelable.setName(jsonObject.getJSONObject("data").optString("name"));

и используйте optLong, потому что код содержит строку плюс ключ cod_user, а не code

...