Android VOLLEY посылать json и получать json в response

Хорошие, что я пробую реализовать, состоит в том, чтобы посылать json с Android с Volley php, который у меня есть на моем сервере, внутри php я реализую какие-то консультации и мне нужно, чтобы под меня возвратил другой json (response), чтобы работать с вышеупомянутыми данными. Я довожу до сведения, что этот PHP функционирует хорошо с другой APP, которую я использую httpPost, но как этот deprecated я обновляю APP используя VOLLEY

Проблема, которая у меня есть, состоит в том, что он не вводит информацию в компьютер в код, с debug я замечаю, чем первой линии

JsonObjectRequest postRequest = new JsonObjectRequest( Request.Method.POST, URL,
                        jsonParams,
                        new Response.Listener<JSONObject>() {

Прыгни прямо в следующую линию вне этой функции, может быть, я считаю что-то плохим в параметрах или в заявлении, оставляю им код

**** Desde esta primera linea salta directamente a requestQueue.add(postRequest); sin entrar *****


JsonObjectRequest postRequest = new JsonObjectRequest( Request.Method.POST, URL,
    jsonParams,
    new Response.Listener<JSONObject>() {
        @Override
        public void onResponse(JSONObject response) {
            try {
                JSONObject Obj = response;
                JSONArray jarray = Obj.getJSONArray("usu");
                if (jarray.length() <= 0) {
                    Toast.makeText(getApplicationContext(), "SIN REGISTROS PARA ACTUALIZAR", Toast.LENGTH_SHORT).show();
                } else {
                    for (int i = 0; i < jarray.length(); i++) {
                        JSONObject object1 = jarray.getJSONObject(i);

                        String variable = object1.getString("variable");
                        String variable2 = object1.getString("variable2");
                    }
                }
            } catch (JSONException e) {
                e.printStackTrace();
            }
            dialog.dismiss();
        }
    },
    new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
            dialog.dismiss();
        }
    }) {

    };
    *** salta directamente a esta línea ****
    requestQueue = Volley.newRequestQueue(SettingsActivity.this);
    requestQueue.add(postRequest); 
    **** En la línea anterior me muestra lo siguiente debugeando: RequestQueue: RequestQueue@5107 postRequest: "[] www.url.com/php/ejemplo.php 0xb7f7dc44 NORMAL null"

    }else{
        Toast toast1 = Toast.makeText(getApplicationContext(),"El Servicior y/o el Usuario no pueden estar vacíos", Toast.LENGTH_SHORT);
        toast1.show();
    }

    }
});
}

СПАСИБО!!!

2
задан 11.07.2017, 19:36
2 ответа

Он имеет смысл, что я ограбил весь c¦digo второго блока, так как вызов не делается немедленно, а когда volley он получает ответ.

Тогда, когда ты называешь requestQueue.add(postRequest) volley encola этот запрос и он выполняет ее asincr¦nicamente, следовательно весь c¦digo onResponse будет работать después этого вызова, когда volley env¦ - и запрос и получите результат.

, Чтобы мочь делать debug, я предлагаю тебе поместить breakpoint в первую линию onResponse и onErrorResponse таким образом detendrÃ: трэд, когда ты получишь ответ вызова.

-1
ответ дан 24.11.2019, 07:35
  • 1
    Спасибо за ответ, я это подумал в это, но редкое состоит в том, что APP закрывается!!! не говоря ningú n тип ошибки и в debugestoy с F8 костлявая, что по крайней мере deberí чтобы происходить из-за ahí например в Asynctask происходи с F8, но в этом случае он, как который ahí я заканчиваюсь, очевидно есть ошибка, потому что APP закрывается, но не показывает меня ningú n ошибка – desarrollosTELLO 12.07.2017, 10:21

Хороший парни наконец resolvÃ, - не спросили, потому что ни, как, это эти тайны в informÃ: костариканский jajaja, я совсем не верю в то, что изменил и равный salià идя и функционируй, я оставляю их ему, если в alguién он интересует его. То, что он делает этим bot¦n, состоит в том, чтобы брать пользователь и сервер, что estÃ: n в inputs activity, он посылает их как parÃ: метры json в php. Этот php делает select таблицы según пользователь и возвращает мне también json, который это взял, я это обрабатываю и это показываю в TOAST подобно примеру, чтобы проверять, прибывали ли они. То, что они видят ahà - MCrypt () для encriptar данные, ПРИВЕТ

Им оставил c¦digo, если он подает им

btnGuardar.setOnClickListener(new View.OnClickListener() {
            public void onClick(View view) {
                // por si el usuario los cambio los vuelvo a referenciar
                requestQueue = Volley.newRequestQueue(SettingsActivity.this);
                usuario_celu = et_usuario_celu.getText().toString();
                servidor_celu = et_servidor_celu.getText().toString();
                if (!(servidor_celu == null || servidor_celu.equals("") || usuario_celu == null || usuario_celu.equals(""))){
                    mcrypt = new MCrypt();
                    try {
                        usuario_celu_e = MCrypt.bytesToHex(mcrypt.encrypt( usuario_celu));
                        servidor_celu_e = MCrypt.bytesToHex(mcrypt.encrypt( servidor_celu));
                    } catch (Exception e) {
                        e.printStackTrace();
                    }

                    String URL = servidor_celu.trim() + Globales.CREAR_RELACION;
                    dialog = new ProgressDialog(SettingsActivity.this);
                    dialog.setMessage("Registrando Usuario...");
                    dialog.show();


                    JSONObject jsonParams = new JSONObject();
                    try {
                        jsonParams.put("username", usuario_celu_e);
                        jsonParams.put("server", servidor_celu_e);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    JsonObjectRequest postRequest = new JsonObjectRequest( Request.Method.POST, URL,
                            jsonParams,
                            new Response.Listener<JSONObject>() {
                                @Override
                                public void onResponse(JSONObject response) {
                                    try {
                                        JSONObject Obj = response;
                                        JSONArray jarray = Obj.getJSONArray("usu");
                                        if (jarray.length() <= 0) {
                                            Toast.makeText(getApplicationContext(), "SIN REGISTROS PARA ACTUALIZAR", Toast.LENGTH_SHORT).show();
                                        } else {
                                            for (int i = 0; i < jarray.length(); i++) {
                                                JSONObject object1 = jarray.getJSONObject(i);

                                                String empresa_e = object1.getString("empresa");
                                                String sucursal_e = object1.getString("sucursal");
                                                String passw_e = object1.getString("password");
                                                String servidor_e = object1.getString("servidor");

                                                mcrypt = new MCrypt();
                                                try {
                                                    String empresa =  new String(mcrypt.decrypt(empresa_e));
                                                    String sucursal = new String(mcrypt.decrypt(sucursal_e));
                                                    String passw =    new String(mcrypt.decrypt(passw_e));
                                                    String servidor = new String(mcrypt.decrypt(servidor_e));
                                                    Toast toast2 = Toast.makeText(getApplicationContext(),"DATOS: " + empresa + " | " + sucursal + " | " + passw + " | " + servidor , Toast.LENGTH_SHORT);
                                                    toast2.show();
                                                } catch (Exception e) {
                                                    e.printStackTrace();
                                                }
                                            }
                                        }

                                    } catch (JSONException e) {
                                        e.printStackTrace();
                                    }
                                    dialog.dismiss();

                                }
                            },
                            new Response.ErrorListener() {
                                @Override
                                public void onErrorResponse(VolleyError error) {
                                    error.printStackTrace();
                                    dialog.dismiss();
                                }
                            }) {

                    };

                    requestQueue.add(postRequest);
                }else{
                    Toast toast1 = Toast.makeText(getApplicationContext(),"El Servicior y/o el Usuario no pueden estar vacíos", Toast.LENGTH_SHORT);
                    toast1.show();
                }

            }
        });
    }
3
ответ дан 24.11.2019, 07:35