2016-02-15 3 views
0

У меня есть активность в регистре в моем приложении для Android и с помощью андроид-волейбола я вызываю файл PHP на сервере.android volley не передает параметры

После ввода данных и нажатия введите следующий ответ.

02-15 12:59:09.939: D/RegisterActivity(377): Register Response: <br /> 
02-15 12:59:09.939: D/RegisterActivity(377): <b>Notice</b>: Undefined index: name in <b>D:\www\students\project\register.php</b> on line <b>12</b><br /> 
02-15 12:59:09.939: D/RegisterActivity(377): <br /> 
02-15 12:59:09.939: D/RegisterActivity(377): <b>Notice</b>: Undefined index: email in <b>D:\www\students\project\register.php</b> on line <b>13</b><br /> 
02-15 12:59:09.939: D/RegisterActivity(377): <br /> 
02-15 12:59:09.939: D/RegisterActivity(377): <b>Notice</b>: Undefined index: dob in <b>D:\www\students\project\register.php</b> on line <b>14</b><br /> 
02-15 12:59:09.939: D/RegisterActivity(377): <br /> 
02-15 12:59:09.939: D/RegisterActivity(377): <b>Notice</b>: Undefined index: gender in <b>D:\www\students\project\register.php</b> on line <b>15</b><br /> 
02-15 12:59:09.939: D/RegisterActivity(377): <br /> 
02-15 12:59:09.939: D/RegisterActivity(377): <b>Notice</b>: Undefined index: password in <b>D:\www\students\project\register.php</b> on line <b>16</b><br /> 

02-15 12:59:09.939: D/RegisterActivity(377): {"error":true,"error_msg":"Required Parameters (name, email, gender, dob, password) missing"} 

Таким образом, очевидно, что результат означает, что ничего не передается.

Итак, вот моя регистрация активности, где, используя залп, делается запрос.

private void registerUser(final String name, final String email, final String dob, final String gender, final String password) { 
     // Tag used to cancel the request 
     String tag_string_req = "req_register"; 

     pDialog.setMessage("Registering ..."); 
     showDialog(); 

     StringRequest strReq = new StringRequest(Method.POST,ApplicationServicesConfig.Register_URL, new Response.Listener<String>() { 

      @Override 
      public void onResponse(String response) { 
       Log.d(TAG, "Register Response: " + response.toString()); 
       hideDialog(); 

       try { 
        JSONObject jObj = new JSONObject(response); 
        boolean error = jObj.getBoolean("error"); 
        if (!error) { 
         // User successfully stored in MySQL 
         // Now store the user in sqlite 

         JSONObject user = jObj.getJSONObject("user"); 
         String name = user.getString("name"); 
         String email = user.getString("email"); 
         String dob = user.getString("dob"); 
         String gender = user.getString("gender"); 
         String created_at = user.getString("created_at"); 

         // Inserting row in users table 
         db.addUser(name, email, dob, gender, created_at); 

         Toast.makeText(getApplicationContext(), "User successfully registered. Try login now!", Toast.LENGTH_LONG).show(); 

         // Launch login activity 
         Intent intent = new Intent(
           RegisterActivity.this, 
           LoginActivity.class); 
         startActivity(intent); 
         finish(); 
        } else { 

         // Error occurred in registration. Get the error 
         // message 
         String errorMsg = jObj.getString("error_msg"); 
         Toast.makeText(getApplicationContext(), 
           errorMsg, Toast.LENGTH_LONG).show(); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 

      } 
     }, new Response.ErrorListener() { 

      @Override 
      public void onErrorResponse(VolleyError error) { 
       Log.e(TAG, "Registration Error: " + error.getMessage()); 
       Toast.makeText(getApplicationContext(), 
         error.getMessage(), Toast.LENGTH_LONG).show(); 
       hideDialog(); 
      } 
     }) { 

      @Override 
      protected Map<String, String> getParams() { 
       // Posting params to register url 
       Map<String, String> params = new HashMap<String, String>(); 
       params.put("name", name); 
       params.put("email", email); 
       params.put("dob", dob); 
       params.put("gender", gender); 
       params.put("password", password); 
       return params; 
      }  

      @Override 
      public Map<String, String> getHeaders() throws AuthFailureError { 
       HashMap<String, String> params = new HashMap<String, String>(); 
       params.put("Authorization", "Basic Z2FycmV0dGg6ZnJBc3Rpbmc0"); 
       return params; 
      } 
     }; 
     Log.d(TAG, "STRING REQUEST: " + strReq.getUrl()); 
     // Adding request to request queue 
     ApplicationController.getInstance().addToRequestQueue(strReq, tag_string_req); 
    } 

Карта, насколько я могу судить, отображает все правильные параметры в URL.

Обычно я делаю это с использованием HTTP-запросов, но читаю, что волейбол - намного более чистый способ. Во всяком случае я назвал URL непосредственно с параметрами, передаваемыми на конце, как обычно например? Имя = боб & возраста и т.д. и т.п.

Есть ли способ, вы можете распечатать URL залповых звонков, или PARAMS он добавляет?

Благодаря

EDIT PHP:

<?php 
/** 
*/ 
require_once 'helpers/db_functions.php'; 
$db = new db_functions(); 

$response = array("error" => FALSE); 
$name = $_GET['name']; 
$email = $_GET['email']; 
$dob = $_GET['dob']; 
$gender = $_GET['gender']; 
$password = $_GET['password']; 
$string = $name + $email + $dob + $gender + $password; 
json_encode($string); 

if (isset($_GET['name']) && isset($_GET['email']) && isset($_GET['dob']) && isset($_GET['gender']) && isset($_GET['password'])){ 
    $name = $_GET['name']; 
    $email = $_GET['email']; 
    $dob = $_GET['dob']; 
    $gender = $_GET['gender']; 
    $password = $_GET['password']; 

    if ($db->isUserExisted($email)){ 
     $response["error"] = TRUE; 
     $response["error_msg"] = "User email already exists = " . $email; 
     echo json_encode($response); 
    }else{ 
     $user = $db->insertUser($name,$email,$gender,$dob,$password); 
     if ($user){ 
      $response["error"] = FALSE; 
      $repsonse["user"]["id"] = $user["id"]; 
      $repsonse["user"]["name"] = $user["name"]; 
      $repsonse["user"]["email"] = $user["email"]; 
      $repsonse["user"]["dob"] = $user["dob"]; 
      $repsonse["user"]["gender"] = $user["gender"]; 
      $response["user"]["created_at"] = $user["created_at"]; 
      echo json_encode($response); 
     }else{ 
      $response["error"] = TRUE; 
      $response["error_msg"] = "Problem when registering user"; 
      echo json_encode($response); 
     } 
    } 
}else{ 
    $response["error"] = TRUE; 
    $response["error_msg"] = "Required Parameters (name, email, gender, dob, password) missing"; 
    echo json_encode($response); 
} 



?> 
+0

Вы протестировали свою страницу PHP самостоятельно, если она работает или нет? – Sharj

+0

необходимо просмотреть URL-адрес веб-службы –

+0

Да, это работает, как я уже упоминал выше (хотя и не ясно). Я назвал страницу .php с параметрами на конце, например? Name = bob & age = 22, и он работал нормально. @Sharj – bananabreadbob

ответ

0

Ok. Вы отправили файл php. Вы можете ясно видеть, что он ожидает метод GET. Поэтому поручите Volley делать запрос GET вместо запроса POST сейчас.

+0

Обновлена ​​строка 'StringRequest strReq = new StringRequest (Method.POST, ApplicationServicesConfig.Register_URL, новый Response.Listener () {' и все еще получил ответ '02-15 14:47 : 31.968: D/LoginActivity (625): Login Response: {"error": true, "error_msg": "Отсутствует необходимая информация (адрес электронной почты, пароль)!"} '@Greenapps – bananabreadbob

+0

Какая строка скрипта php php pruuciing ошибка в тексте json? – greenapps

+0

Оператор else из if, который проверяет наличие параметров '} else { $ response [" error "] = TRUE; $ response [" error_msg "] =" Обязательные параметры (имя, адрес электронной почты , gender, dob, password) missing "; echo json_encode ($ response);' @greenapps – bananabreadbob

Смежные вопросы