Работа с сервером и параметром GET Volley для отображения сведений о пользователе

Прошло много времени с тех пор, как я разместил здесь.
Прямо сейчас я застрял в этой области, где я должен получить данные с моего сервера, используя залп. Вы видите, я хотел отобразить отдельные данные с сервера; но когда приложение запущено, появляется сообщение об ошибке «Обязательный параметр ‘tag’ отсутствует!» появился. Это сообщение об ошибке написано в файле php, поэтому я предположил, что с моим файлом активности Java что-то не так.

Я был бы очень признателен за любую помощь, потому что я не могу найти похожие ответы в течение почти недели. Поэтому я выложу коды, которые участвуют ниже. И, пожалуйста, поправьте меня, если есть лучшее решение для этого! Изучать разработку под Android было действительно весело, и я очень надеюсь, что смогу справиться с этим, конечно, не один!

getUserDetails извлечь данные с сервера? Хотя я не уверен, ПОЧЕМУ именно так params.put («tag», «…») здесь не работает)

 public void getUserDetails() {
// Tag to cancel this request:
String tag_string_req = "req_user_profile";

StringRequest stringRequest = new StringRequest(Request.Method.GET, AppConfig.URL_USER_DETAILS,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "Get User Details Response: " + response.toString());

try {
JSONObject jsonObject = new JSONObject(response);
boolean error = jsonObject.getBoolean("error");
if (!error) {
// Retrieving user's details from database
JSONObject user = jsonObject.getJSONObject("user");
String username = user.getString("username");
String first_name = user.getString("first_name");
String last_name = user.getString("last_name");
String email = user.getString("email");
String type_of_tradesman = user.getString("type_of_tradesman");

sqLiteHandler.getUserDetails(username, email, first_name, last_name,
type_of_tradesman);

profileUsername.setText(username);
} else {
// Error occurred. Getting the error message from index.php
String errorMsg = jsonObject.getString("error_msg");
Toast.makeText(getApplicationContext(), errorMsg, Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Log.e(TAG, "User Details Retrieval Error: " + volleyError.getMessage());
Toast.makeText(getApplicationContext(), volleyError.getMessage(), Toast.LENGTH_SHORT).show();
}
}) {
@Override
protected Map<String, String> getParams() {
// Posting params to URL
Map<String, String> params = new HashMap<String, String>();
params.put("tag", "checkuserdetails");

return params;
}};

// Adding request to the RequestQueue
AppController.getInstance().addToRequestQueue(stringRequest, tag_string_req);
}

И в предыдущем коде вы заметите, что я использовал SQLiteHandler’s getUserDetails Вот. Это выглядит полезным, но я не знаю, должно ли это быть здесь.

public HashMap<String, String> getUserDetails(String username, String email, String first_name,
String last_name, String type_of_tradesman) {
HashMap<String, String> user = new HashMap<String, String>();
String selectQuery = "SELECT  * FROM " + TABLE_LOGIN;

SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// Move to first row
cursor.moveToFirst();
if (cursor.getCount() > 0) {
user.put("username", cursor.getString(1));
user.put("first_name", cursor.getString(2));
user.put("last_name", cursor.getString(3));
user.put("email", cursor.getString(4));
user.put("type_of_tradesman", cursor.getString(5));
user.put("uid", cursor.getString(6));
user.put("created_at", cursor.getString(7));
}
cursor.close();
db.close();
// return user
Log.d(TAG, "Fetching user from Sqlite: " + user.toString());

return user;
}

Наконец, php-файл, который помогает определить «тег» запроса. Однако после запуска приложения выдается ошибка Toast (обязательный параметр ‘tag’!), Сообщающий, что тег не найден!

    } else if ($tag == 'checkuserdetails') {
$user = $db->getUserDetails($username, $email, $first_name, $last_name, $date_of_birth, $type_of_tradesman);
if ($user != false) {
// User found
$response["error"] = FALSE;
$response["uid"] = $user["unique_id"];
$response["user"]["username"] = $user["username"];
$response["user"]["email"] = $user["email"];
$response["user"]["first_name"] = $user["first_name"];
$response["user"]["last_name"] = $user["last_name"];
$response["user"]["type_of_tradesman"] = $user["type_of_tradesman"];
$response["user"]["created_at"] = $user["created_at"];
$response["user"]["updated_at"] = $user["updated_at"];
echo json_encode($response);
} else {
// Or else if user is not found
$response["error"] = TRUE;
echo json_encode($response);
}
...
...
...
} else {
$response["error"] = TRUE;
$response["error_msg"] = "Required parameter 'tag' is missing!";
echo json_encode($response);
}

Функция $ db-> getUserDetails ниже:

     /**
* Retrieve user's details from the database
*/
public function getUserDetails($username, $email, $first_name, $last_name, $date_of_birth, $type_of_tradesman) {
$uuid = uniqid('', true);
$result = mysql_query("SELECT * FROM users WHERE uid = $uid");
// check for successful store
if ($result) {
// Get user details
$result = mysql_fetch_array($result);

$user = array();
$user["uid"] = $result["uid"];
$user["username"] = $result["username"];
$user["email"] = $result["email"];
$user["first_name"] = $result["first_name"];
$user["last_name"] = $result["last_name"];
$user["type_of_tradesman"] = $result["type_of_tradesman"];
} else {
return false;
}
}

0

Решение

Когда вы делаете запрос GET, вы должны передавать значения запроса в URL только так AppConfig.URL_USER_DETAILS+"?tag=checkuserdetails";

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector