错误域=NSCocoaErrorDomain 代码=3840 JSONObject

Posted

技术标签:

【中文标题】错误域=NSCocoaErrorDomain 代码=3840 JSONObject【英文标题】:Error Domain=NSCocoaErrorDomain Code=3840 JSONObject 【发布时间】:2020-03-14 02:02:08 【问题描述】:

我正在尝试使用来自 xcode 的 switf 4 使用 rest web 服务,这是我的代码:

func login_crm(user:String, passwd:String) 


    let url = URL(string: "https://intranet.jytcolombia.com/ws/ws_ios/iosws_login.php?par1=\(user)&par2=\(passwd)")
    let request = URLRequest(url: url!)
    let task = URLSession.shared.dataTask(with: request)data, response, error in
        guard let data = data else
            print("Linea 33 \(error)")
            return
        
        do
            print("Recibimos respuesta")
            if let json = try JSONSerialization.jsonObject(with: data, options: .allowFragments) as? [String: String] 
                DispatchQueue.main.async 
                    let result = json["login"]

                    if(result == "true")

                        let result = json["login"]

                        if(result == "true")



                         else 
                            let alert = UIAlertController(title: "Inicio de Sesion", message: "Usuario o contraseña invalidos", preferredStyle: .alert)
                            alert.addAction(UIAlertAction(title: "OK", style: .default))
                            self.present(alert, animated: true, completion: nil)
                        

                     else 
                        let alert = UIAlertController(title: "Inicio de Sesion", message: "Usuario o contraseña invalidos", preferredStyle: .alert)
                        alert.addAction(UIAlertAction(title: "OK", style: .default))
                        self.present(alert, animated: true, completion: nil)
                    

                
            

        catch let parseError
            print("Linea 50: \(parseError)")
            let responseString = String(data: data, encoding: .utf8)
            print("Linea 52: \(responseString)")
        
    
    task.resume()




这是我在 xcode 控制台中的回答:

Linea 50:错误域=NSCocoaErrorDomain 代码=3840“无效值 围绕字符 0。” UserInfo=NSDebugDescription=无效值围绕 字符 0. 第 52 行:可选("|\"login\":\"true\"")

这是我的代码网络服务:

|<?php
    header("Content-type: application/json; charset=utf-8");


$response = array();

if($_SERVER['REQUEST_METHOD'] == 'GET')
    $user = $_GET['par1'];
    $passwd = sha1($_GET['par2']);

    $consulta = "SELECT * FROM USUARIOS WHERE USUARIOS.usuarios_nombreusuario = '$user' AND USUARIOS.usuarios_password = '$passwd' LIMIT 1";
    $proceso = mysqli_query($conexioni, $consulta) or die(mysqli_error($conexioni)); 
    $cols = mysqli_num_rows($proceso);

    if($cols == 0)
        $response['login'] = "false";
     else
        $response['login'] = "true";
    

    echo json_encode($response);

?>

【问题讨论】:

【参考方案1】:

我可以看到您的响应字符串包含一个 |人物:

"|\"login\":\"true\""

它导致了 json 解析问题。请检查您的服务器代码。

【讨论】:

以上是关于错误域=NSCocoaErrorDomain 代码=3840 JSONObject的主要内容,如果未能解决你的问题,请参考以下文章

Json 错误:错误域 = NSCocoaErrorDomain 代码 = 3840“无值”。 UserInfo=NSDebugDescription=无值。

错误域 = NSCocoaErrorDomain 代码 = 3840 “字符周围的值无效

iOS swift 中的错误域 = NSCocoaErrorDomain 代码 = 3840?

iOS:- 错误:无法创建存储目录。错误域 = NSCocoaErrorDomain 代码 = 512

错误域=NSCocoaErrorDomain 代码=3840 JSONObject

错误域 = NSCocoaErrorDomain 代码 = 3840 “JSON 文本不是以数组或对象开头