I'm getting this error:
Optional("<meta charset=\"UTF-8\">{\"Email\":\"Error\",\"Password\":\"Error\"}\r\n\r\n\r\n")
Error Domain=NSCocoaErrorDomain Code=3840 "JSON text did not start with array or object and option to allow fragments not set." UserInfo={NSDebugDescription=JSON text did not start with array or object and option to allow fragments not set.}
my server is sending a response like <meta charset="UTF-8">{"Email":"Error","Password":"Error"}.
It definitely is not a valid JSON, as it starts with `<`
i don't know why it's not working because i had log in correctly with HTML code from scratch
my php code
<?php
$con=mysqli_connect("cantshowthis","hehe","sorry",":c");
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$sql = "SELECT * FROM Registro";
if ($result = mysqli_query($con, $sql))
{
$resultArray = array();
$tempArray = array();
while($row = $result->fetch_object())
{
$tempArray = $row;
array_push($resultArray, $tempArray);
}
echo json_encode($resultArray);
}
mysqli_close($con);
?>
this is my XCODE code
@IBAction func iniciarSesion(_ sender: UIButton) {
guard
let emailText = Email.text, !emailText.isEmpty,
let contrasenaText = Contrasena.text, !contrasenaText.isEmpty else
{
displayAlert(title: "Información Faltante", message: "Debes porporcionar un correo y contraseña")
return
}
let myURL = URL(string: "hehe")
var request = URLRequest(url: myURL!) rather than `NSMutableURLRequest`
request.httpMethod = "POST"
let posString = "Email=\(emailText)&Password=\(contrasenaText)"
request.httpBody = posString.data(using: .utf8)
let task = URLSession.shared.dataTask(with: request) {
data, response, error in
if let error = error {
print("error=\(error)")
return
}
guard let data = data else {
print("Something wrong")
return
}
print(String(data: data, encoding: .utf8) as Any)
do {
let json = try JSONSerialization.jsonObject(with: data)
if let parseJSON = json as? [String: Any]{
guard let resultValue = parseJSON["status"] as? String else {
print("No `status` in result")
return
}
print("message: \(resultValue) ")
if (resultValue == "success") {
UserDefaults.standard.set(true, forKey: "isUserLoggedIn")
UserDefaults.standard.synchronize()
} else {
cases
}
} else {
print("Result JSON is ill-formatted:", json)
}
} catch let err {
print(err)
}
}
task.resume()
}
What I have tried:
parsing JSON is valid but my i guess my error is PHP i don't know what to do