Android: запрос строки Volley onresponse не вызывается

Я пытаюсь отправить данные с android на php, используя метод POST

Часть php протестирована сама по себе, и она работает на 100%, и возвращает строку json как предполагаемую

Часть андроида не работает, она не печатает ошибку или даже требуемый ответ

Вот код и он протестирован, печатая строку «test» с помощью Toast, но она не изменяется в коде волейбола 🙁

Это код php:

<?php require_once(__DIR__.'/../dbConnect.php'); $userName=$_POST['username']; $query = "SELECT * FROM users WHERE username='$userName'"; $result = pg_query($con, $query); $rows = pg_num_rows($result); while ($row = pg_fetch_row($result)) { $field = pg_num_fields( $result ); for ( $i = 0; $i < $field; $i++ ) { $name = pg_field_name( $result, $i ); $user_arr[$name] = $row[$i]; } } echo json_encode($user_arr); pg_close($con); ?> 

И это код Android:

Инициализация тестовой строки для вывода вывода

 String test = "none"; 

Это то, где я называю метод

  setUserData(username); Toast.makeText(LoginActivity.this, test, Toast.LENGTH_SHORT).show(); 

И это метод:

  private void setUserData(final String username) { StringRequest strReq = new StringRequest(Request.Method.POST, Server.GET_USERDATA_URL, new Response.Listener<String>() { @Override public void onResponse(String response) { test= "test = "+response; } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { Toast.makeText(LoginActivity.this, volleyError.getMessage().toString(), Toast.LENGTH_LONG).show(); } }) { @Override protected Map<String, String> getParams() { // Posting parameters to getData url Map<String, String> params = new HashMap<String, String>(); params.put(Server.KEY_USERNAME, username); return params; } }; //Creating a Request Queue RequestQueue requestQueue = Volley.newRequestQueue(this); //Adding request to the queue requestQueue.add(strReq); } 

У вас проблема параллелизма. Когда вы выполняете setUserData(username) Volley выполняет работу над фоновым потоком. Поэтому вам нужно дождаться ответа, прежде чем вы сможете отобразить его в Toast. В тот момент, когда вы звоните:

 Toast.makeText(LoginActivity.this, test, Toast.LENGTH_SHORT).show(); 

Сервер все еще не ответил, и test прежнему не будет. Вам нужно вызвать тост из обратного вызова onResponse :

 private void setUserData(final String username) { StringRequest strReq = new StringRequest( Request.Method.POST, Server.GET_USERDATA_URL, new Response.Listener<String>() { @Override public void onResponse(String response) { test = "test = "+response; showToast(); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { Toast.makeText(LoginActivity.this, volleyError.getMessage().toString(), Toast.LENGTH_LONG).show(); } }) { @Override protected Map<String, String> getParams() { // Posting parameters to getData url Map<String, String> params = new HashMap<String, String>(); params.put(Server.KEY_USERNAME, username); return params; } }; //Creating a Request Queue RequestQueue requestQueue = Volley.newRequestQueue(this); //Adding request to the queue requestQueue.add(strReq); } private void showToast() { Toast.makeText(LoginActivity.this, test, Toast.LENGTH_SHORT).show(); } 

Проверьте, получили ли вы разрешение на Интернет.

Также добавьте тост в

 onResponse() Toast.makeText(LoginActivity.this, response.toString(), Toast.LENGTH_LONG).show(); 
Intereting Posts
Android – Сервис – метод onDestroy (), который не вызывается при использовании Force Stop Сбой WebView при запуске приложения на устройстве для пряников OnSaveInstanceState не сохраняет мои значения (onCreate input Bundle всегда равно null) Открыть профиль пользователя Instagram Как загрузить XML-файл с сервера и сохранить его на SD-карте? Вложенное scrollview + recyclerview, странное поведение autoscroll Данные адаптера RecycleView отображаются неправильно при прокрутке слишком быстро Ошибка получателя при регистрации функции onDestroy Android nullpointerexception в ActionBarDrawerToggle.syncState () Чтение локального файла в Phonegap Идентификационный RTL-язык в Android Как программно установить приложение запуска по умолчанию? Есть ли способ заставить WebView обновлять его изображение (просмотр) при прокрутке? Определение требований к питанию для бесконтактной смарт-карты на Java. Активность камеры, при которой uri переходит к нулевому значению при изменении ориентации экрана