Я разрабатываю приложение для Android, и теперь я делаю действия «CreateAccount» и «Логин» пользователя. Я могу вставить информацию о пользователе в базу данных, но не могу получить информацию о пользователе из базы данных, чтобы выполнить вход в систему. Это мой код Java:
String showUrl = "http://192.168.0.11/webapps/showUser.php";
public void searchLoginInfo(View view) {
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST,showUrl,null, new Response.Listener<JSONObject>()
{
@Override
public void onResponse(JSONObject response) {
try {
JSONArray users = response.getJSONArray("users");
for (int i = 0; i < users.length(); i++) {
JSONObject user = users.getJSONObject(i);
String username = user.getString("username").toLowerCase();
String password = user.getString("password").toLowerCase();
String retypedPassword = user.getString("retypedpassword").toLowerCase();
String email = user.getString("passphrase").toLowerCase();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "onErrorResponse: ERORR!!!!!!!!!!!" );
Log.e(TAG, "onErrorResponse: ERORR!!!!!!!!!!!"+error.toString() );
}
});
requestQueue.add(jsonObjectRequest);
}
Я получаю ошибку: E / MyActivity: onErrorResponse: ОШИБКА !!!!!!!!!!!
E / MyActivity: onErrorResponse: ERORR !!!!!!!!!!! com.android.volley.ParseError: org.json.JSONException: значение Соединение типа java.lang.String не может быть преобразовано в JSONObject..
Это мой скрипт showUser.php:
<?php
if($_SERVER["REQUEST_METHOD"]=="POST"){
include 'connection.php';
showUser();
}
function showUser(){
global $connect;
$query="SELECT* FROM user;";
$result=mysqli_query($connect,$query);
$number_of_rows=mysqli_num_rows($result);
$temp_array=array();
if($number_of_rows>0){
while($row=mysqli_fetch_assoc($result)){
$temp_array[]=$row;
}
}
header('Content-Type:application/json');
echo json_encode(array("users"=>$temp_array));
mysqli_close($connect);
}
?>
От чего у меня красный в интернете может быть проблема с сопоставлением ?! Мое сопоставление таблицы и столбцы — utfmb4_general_ci, а сопоставление моего соединения с сервером — utfmb4_unicode_ci Снимок экрана
Я также использовал POSTMAN, чтобы увидеть фактический ответ от сервера, и он выглядит хорошо для меня.
{
"users": [
{
"username": "charlie",
"password": "harris",
"retypedpassword": "harris",
"email": "[email protected]"},
{
"username": "tomas",
"password": "kovtun",
"retypedpassword": "kovtun",
"email": "[email protected]"}
]
}
Эта проблема действительно убивает меня, ребята, поэтому любая помощь будет оценена! Спасибо!
Использовать этот:
public void searchLoginInfo(View view) {
StringRequest stringRequest = new StringRequest(Request.Method.POST,showUrl, new Response.Listener<String>()
{
@Override
public void onResponse(String response) {
try {
response = response.replaceAll("[^\\p{ASCII}]", "");
JSONObject jsonObject = new JSONObject(response);
JSONArray users = jsonObject.getJSONArray("users");
for (int i = 0; i < users.length(); i++) {
JSONObject user = users.getJSONObject(i);
String username = user.getString("username").toLowerCase();
String password = user.getString("password").toLowerCase();
String retypedPassword = user.getString("retypedpassword").toLowerCase();
String email = user.getString("passphrase").toLowerCase();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener()
{
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "onErrorResponse: ERORR!!!!!!!!!!!" );
Log.e(TAG, "onErrorResponse: ERORR!!!!!!!!!!!"+error.toString() );
}
});
requestQueue.add(stringRequest);
}
Других решений пока нет …