У меня есть активность в регистре в моем приложении для 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);
}
?>
Вы протестировали свою страницу PHP самостоятельно, если она работает или нет? – Sharj
необходимо просмотреть URL-адрес веб-службы –
Да, это работает, как я уже упоминал выше (хотя и не ясно). Я назвал страницу .php с параметрами на конце, например? Name = bob & age = 22, и он работал нормально. @Sharj – bananabreadbob