Почему я получаю эту ошибку при попытке подключиться к моему веб-сервису = код 3840? - PullRequest
0 голосов
/ 07 мая 2019

Я устанавливаю соединение из приложения с веб-службой, веб-службе требуются два поля, чтобы иметь возможность возвращать результат, проблема в том, что при выполнении кода для подключения к веб-службе возникает ошибка, этаэто ошибка:

Ошибка домена = NSCocoaErrorDomain Code = 3840 «Текст JSON не начинался с массива или объекта, и параметр, позволяющий не устанавливать фрагменты.»UserInfo = {NSDebugDescription = Текст JSON не начинался с массива или объекта, и параметр, позволяющий не устанавливать фрагменты.}

Я просмотрел свой код, но не могу найти ошибку, я попытался изменитьметод отправки «POST» в «GET», но он работает так же, если я пишу URL в поисковой системе и передаю два параметра для запроса, работает правильно

это мой локальный URL:

http://10.0.2.15/MGrex/listaVideos.php?nombreS=Enrique&telefonoS=5535976020

Это мой IBAction, который выполняет запрос к веб-службе:

@IBAction func desplegarWebService(_ sender: Any) {

        //Recuperamos los datos de los TextField

        let nombre = nombreTextField?.text
        let telefono = telefonoTextField?.text

        if(nombre == "" || telefono == ""){
            print("Debes ingresar el nombre y el telefono para consultar")
            return
        }

        let post = "nombreS=\(nombre!)&telefonoS=\(telefono!)"

        let url = URL(string: "http://10.0.2.15/MGrex/listaVideos.php")
        var request = URLRequest(url: url!)

        request.httpMethod = "GET"//Tipo de envio de informacion
        request.httpBody = post.data(using: .utf8)//Pasamos las variables a la cabecera con codificacion UTF8

        let task = URLSession.shared.dataTask(with: request){ data, response, error in guard let data = data else{//Si esxiste un error se termina la ejecucion

            print("Error en el servidor")
            return

            }

            do{//Creamos un objeto Json para los valores
                print("Recibimos respuesta")

                if let json = try JSONSerialization.jsonObject(with: data) as? [String: String]{


                    DispatchQueue.main.async {

                        //let id = json["id"]
                        let nombre = json["nombre"]
                        let direccion = json["direccion"]
                        let telefono = json["telefono"]

                        self.nombreTextField.text = nombre
                        self.direccionTextField.text = direccion
                        self.telefonoTextField.text = telefono

                        print(nombre!)
                        print(direccion!)
                        print(telefono!)
                    }
                }
            } catch let parseError{
                print("Error al parsear: \(parseError)")
                print("Error del servidor JSON")
                let responseString = String(data: data, encoding: .utf8)
                print("Respuesta: \(responseString!)")
            }

        }

        task.resume()

    }

, и это мой веб-сервис на PHP:

<?PHP
$servername="localhost";
$database="MGrex";
$username="root";
$password="";

$json = array();

if(isset($_GET["nombreS"]) && isset($_GET["telefonoS"])){
    $nombreS = $_GET["nombreS"];
    $telefonoS = $_GET["telefonoS"];

    $conexion = mysqli_connect($servername,$username,$password,$database);
    mysqli_set_charset($conexion, "utf8");
    $consulta = "select * from soldados WHERE nombre = '{$nombreS}' AND telefono = '{$telefonoS}' ORDER BY id DESC";
    $resultado = mysqli_query($conexion, $consulta);

    while($registro=mysqli_fetch_array($resultado)){
        $json['video'][]=$registro; 
    }

}else{

            $resultar["id"]='No registrado';
            $resultar["nombre"]='No registrado';
            $resultar["direccion"]='No registrado';
            $resultar["telefono"]='No registrado';
            $json['video'][]=$resultar;

}

    mysqli_close($conexion);
    echo json_encode($json);


?>
...