Я устанавливаю соединение из приложения с веб-службой, веб-службе требуются два поля, чтобы иметь возможность возвращать результат, проблема в том, что при выполнении кода для подключения к веб-службе возникает ошибка, этаэто ошибка:
Ошибка домена = 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);
?>