Параметры сообщения запроса строки залпа всегда нулевые в php. - PullRequest
0 голосов
/ 10 декабря 2018

Я отправляю строковый запрос POST с некоторыми параметрами, но в скрипте PHP я всегда получаю значение параметра как ноль.Когда я тестирую PHP с почтальоном, он работает нормально.

это мой код запроса залпа:

public void login(final String mPhone, final String mEmail, final String mPassword) {


        StringRequest stringRequest = new StringRequest(Request.Method.POST, URLs.LOGIN, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                try {
                    JSONObject jsonObject = new JSONObject(response);
                    if (jsonObject.getBoolean("error")) {
                        String error = jsonObject.getString("message");
                        if (error.equals("new user")) {
                            registerUser();
                        } else {
                            showProgress(false);
                            Snackbar.make(mOtpView, error, Snackbar.LENGTH_SHORT).show();
                        }
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                }
            }
        }, new Response.ErrorListener() {

            @Override
            public void onErrorResponse(VolleyError error) {
                showProgress(false);
                Snackbar.make(mOtpView, error.getMessage(), Snackbar.LENGTH_SHORT).show();
            }
        }) {
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<>();
                params.put("phone", mPhone);
                params.put("email", mEmail);
                params.put("password", mPassword);

                return params;
            }
        };
        //Method to limit retry policy of request
        stringRequest.setRetryPolicy(
                new DefaultRetryPolicy(
                        DefaultRetryPolicy.DEFAULT_TIMEOUT_MS * 2,
                        3,
                        DefaultRetryPolicy.DEFAULT_BACKOFF_MULT
                )
        );
        try {

            //Adding request to request queue
            RequestQueue requestQueue = Volley.newRequestQueue(this);
            requestQueue.add(stringRequest);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

, а это мой PHP:

require_once 'DbConfig.php';

$response = array();

if (isset($_GET['apicall'])) {
    switch ($_GET['apicall']) {
        case 'login':

            $phone = $_POST['phone'];
            $email = $_POST['email'];
            $pass = $_POST['password'];

            echo $phone.$email.$pass;exit();

у меня естьПопытка добавления заголовка путем переопределения getHeaders (), а также попытка переопределения getBodyContent (), но, похоже, ничего не работает, а также приведенный выше код работает нормально, когда я использую его в localhost.Я проверил URL-адрес в порядке, потому что скрипт PHP в порядке, так как я проверил его, повторив другие вещи, которые он выполнил нормально.

Ответы [ 3 ]

0 голосов
/ 10 декабря 2018

Вы только отправляете;

params.put("phone", mPhone); params.put("email", mEmail); params.put("password", mPassword);

Как насчет;params.put("apicall","YOu_API");

Полагаю, apicall не установлено, поэтому значения будут нулевыми.

0 голосов
/ 15 декабря 2018

РЕШИТЬ !!!Не могу думать об этом когда-либо !!на самом деле я использовал URL-адрес, как: - http://www.example.com, но когда я попытался http://example.com .. это сработало как очарование ... спасибо всем за помощь, хотя !!

0 голосов
/ 10 декабря 2018

Обычно эта проблема может быть связана с Content-Type, добавить к нему charset = utf-8:

 params.put("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");

Кредит: Volley-POST-EMPTY

...