为什么在尝试连接到我的Web服务=代码3840时收到此错误?

时间:2019-05-07 16:17:31

标签: json web-services web swift3

我正在建立从应用程序到Web服务的连接,该Web服务需要两个字段才能返回结果,问题是我在执行代码以连接到Web服务时遇到错误,这是错误:

  

Error Domain = NSCocoaErrorDomain代码= 3840“ JSON文本未启动   带有数组或对象,并具有允许未设置片段的选项。”   UserInfo = {NSDebugDescription = JSON文本不是以数组开头或   对象和允许未设置片段的选项。}

我已经检查了我的代码,但找不到错误,我尝试将发送“ POST”的方法更改为“ GET”,但是如果我在搜索引擎中写了URL并通过两个参数  查询正常工作

这是我的本地URL:

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

这是我的IBAction,它执行对Web服务的查询:

@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上的Web服务:

<?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);


?>

0 个答案:

没有答案