Я создаю веб-сервис для Android, в котором мне нужно прочитать поле blob из базы данных MySQL.Проблема в том, что я не могу зашифровать это поле в JSON, это формат, который мне понадобится позже для чтения веб-сервиса Android.
Давайте посмотрим, если кто-нибудь знает, что я делаю неправильно.Это мой веб-сервис с PHP:
<?php
require('../../conect/conect.php');
$dbh -> exec("set names utf8");
$res=$dbh->query("select cast(mensaje as char(10000) character set utf8) mensa from ges_mensajes where cod_destino=4;");
$datos = array();
foreach ($res as $row) {
$datos[] = $row;
}
//print_r($datos); //Si ejecuto esta línea me sale bien por pantalla
echo json_encode($datos);
?>
Я пытался привести его к типу char, не приводя его ... факт в том, что если я печатаю с помощью print_r, я получаю данные на экране, но когда язакодировать его в JSON, я ничего не получаю.
И вот как я читаю это с Android:
public void ObtMensaje_volley(){
ArrayList<String> mensaje = new ArrayList<>();
String url = "https://local.es/WS_neton/obt_mensaje_blob.php";
StringRequest eventfulRequest = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONArray jsonArray = new JSONArray(response);
String mensajeM;
for (int i=0; i<jsonArray.length(); i++){
mensajeM = jsonArray.getJSONObject(i).getString("mensa");
mensaje.add(mensajeM);
//Toast.makeText(getApplicationContext(), "mensaje: "+String.valueOf(mensajeM), Toast.LENGTH_SHORT).show();
}
} catch (Exception e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//Log.e("Error: ", error.toString());
}
});
VolleySingleton.getInstance(this)
.addToRequestQueue(eventfulRequest);
}
Android возвращает эту ошибку:
W/System.err: org.json.JSONException: конец ввода для символа 0 из
Но я не знаю, возникает ли проблема из веб-службы или из Android
Любая помощьможно только приветствоватьСпасибо