我正在建立从应用程序到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);
?>