Flutter FormatException: неожиданный символ (в символе 1) - PullRequest
0 голосов
/ 14 апреля 2019

Во флаттере я использую php-файл, который возвращает ответ json на запрос db, но когда я пытаюсь декодировать json, я получаю эту ошибку:

E/flutter ( 8294): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled
Exception: FormatException: Unexpected character (at character 1)
E/flutter ( 8294): [{"0":"PRUEBA","usu_nombre":"PRUEBA"}]
E/flutter ( 8294): ^

Вот моя функция дротика:

Future<String> iniciarSesion() async{
var usuario = textUsuario.text;
var password = textPassword.text;
var nombreUsuario;
var url ="http://192.168.1.37/usuario.php";

//Metodo post
var response = await http.post(
    url,
    headers:{ "Accept": "application/json" } ,
    body: { "usuario": '$usuario',"password": '$password'},
    encoding: Encoding.getByName("utf-8")
);
  List data = json.decode(response.body);
}

И код из моего php-файла:

<?php
error_reporting(E_ALL);
ini_set('display_errors', '1');

include_once "Clases/conexion.php";

$usuario = $_POST['usuario'];
$password = $_POST['password'];

$consulta = "select usu_nombre
FROM usu_usuarios
WHERE usu_nusuario='$usuario'and usu_password='$password' and  usu_activo='SI'";

$mysql_obj = new Conectar();
$mysqli = $mysql_obj->crearConexion();

if($result = $mysqli->query($consulta)) {
if ($mysqli->affected_rows > 0) {
    while($row = $result->fetch_array()) {
        $myArray[] = $row;
    }
    header('Content-type: application/json');
    echo json_encode($myArray);
}else {
    header("HTTP/1.0 401 Datos Incorrectos");
    header('Content-type: application/json');
    $data = array("mensaje" => "Datos Incorrectos");
    echo json_encode($data);
}}
?>

Я использую зависимость http dart

Ответы [ 2 ]

0 голосов
/ 21 июня 2019

Наконец-то я решил проблему, используя laravel, возвращая данные таким образом

return response()->json($yourData, 200, ['Content-Type' => 'application/json;charset=UTF-8', 'Charset' => 'utf-8'],
    JSON_UNESCAPED_UNICODE
0 голосов
/ 14 апреля 2019

Я не знаю, почему вы получаете  до вашего ответа, но я думаю, что в качестве первого символа ожидается {, что не соответствует вашему сценарию.Вы сами добавили  или знаете, почему это часть ответа?Если вы можете заставить его ответить {"0":"PRUEBA","usu_nombre":"PRUEBA"}, вы должны быть в безопасности дома.

Почему вы хотите сохранить ваши данные в виде списка, а не строки?Имея его в виде строки, а не списка, вы избегаете квадратных скобок вокруг ответа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...