Я разрабатываю приложение для Android, которое получает данные из MySql с помощью скрипта PHP.
Я использую залп для запроса, это код на стороне клиента, который работает хорошо.
Volley.newRequestQueue(this).add(new StringRequest(Request.Method.POST, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray jsonArray = new JSONObject(response).getJSONArray("MyArrayName");
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject object = jsonArray.getJSONObject(i);
list.add(object.getString(Keys.PHRASE));
adapter.notifyDataSetChanged();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}));
}
И это мой PHP-скрипт для получения данных из базы данных MySql ($ limit is 30)
<?php
header('Content-Type: application/json;charset=utf-8');
require_once('connection.php');
mysqli_set_charset($conn, 'utf8');
$category=$_GET['category'];
$from = $_GET['from'];
$limit= $_GET['limit'];
$language = $_GET['language'];
// Seed
$today = new DateTime();
$today->setTime(0,0);
$seed = date_timestamp_get($today);
$sql = "SELECT * FROM $language WHERE Category='$category' ORDER BY RAND($seed) LIMIT $from, $limit"; //LIMIT is 30
$rows = array();
$result = mysqli_query($conn, $sql);
while($r = mysqli_fetch_assoc($result)) {
$rows[] = $r;
}
echo json_encode(array('Data' => $rows), JSON_UNESCAPED_UNICODE);
mysqli_close($conn);
?>
Это ответ, я получил массив json около 4000 символов (в данном случае), в общем, общая длина массива (всего символов, а не элементов) составляет от 3000 до 5000 символов.
отклик
Моя проблема заключается в использовании данных приложения Android, это то, что я вижу в Android Profiler:
Использование данных
Я загружаю около 20 КБ для каждого запроса, чтобы получить около 3000/5000 символов, я новичок с Android и сети, но я думаю, что это много.
Я хочу минимизировать использование данных. Любые советы или решение?
Благодарю.
Задача ещё не решена.
Других решений пока нет …