Swift错误:错误域= NSCocoaErrorDomain代码= 3840"我的登录控制器问题"

时间:2016-12-22 04:59:40

标签: php mysql json swift parsing

这是我的代码,我无法编译它。 我正在尝试登录我的服务器,但它不允许我这样做 对不起,我是编程新手,我已经研究过stackoverflow,关于这个错误,我只能解析字典或数组。但我通过复制我的JSON响应来搜索,但它不起作用。 任何建议都会有所帮助!!

import UIKit

class Login: UIViewController {

@IBOutlet var Username: UITextField!
@IBOutlet var Password: UITextField!



@IBAction func Login(sender: UIButton) {


    let username=Username.text
    let password=Password.text

    let URL_LOGIN="http://172.22.95.116/SoilCondition/app/getLogin.php?USERNAME=" + username! + "&PASSWORD=" + password!;

    let requestURL = NSURL(string: URL_LOGIN)

    let request = NSMutableURLRequest(URL: requestURL!)

    request.HTTPMethod = "POST"



    let postParameters = "username="+username!+"&password="+password!;

    request.HTTPBody =            postParameters.dataUsingEncoding(NSUTF8StringEncoding)
    let session = NSURLSession.sharedSession()


    let task = session.dataTaskWithRequest(request){
        data, response, error in guard let data = data where error == nil
            else {
                print("error: \(error)")
                return
        }

        do{
            let myJSON = try NSJSONSerialization.JSONObjectWithData(data,  options: NSJSONReadingOptions.MutableContainers) as? NSDictionary
            if let parseJSON = myJSON{

                var msg: String!
                msg = parseJSON["message"] as! String?
                print(msg)
            }

           /* if let parseJSON = myJSON {

                var msg : String!

                msg = parseJSON["message"] as! String?

                print(msg)
            }*/
            /*if data != nil {
                json = NSString(data: data, encoding: NSUTF8StringEncoding) as! String
                println("json: \(json)")

                if let dictionary = parseJSON(jsonString) {
                    println("dictionary: \(dictionary)")
                }*/
        } catch let parseError{
            print(parseError)
            }
        }
    task.resume()
}



override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

1 个答案:

答案 0 :(得分:0)

我找到了关于错误代码3840的this question

正如它所说,问题可能是您的服务器没有向您返回有效的JSON。

现在,你说:

  

我只能解析字典或数组

我不知道这是否意味着您能够将您从服务器收到的响应实际解析为有效的JSON:

let myJSON = try NSJSONSerialization.JSONObjectWithData(data,  options: NSJSONReadingOptions.MutableContainers) as? NSDictionary

但如果它没有,那么一个好的起点可能是验证你的服务器是否真的向你返回有效的JSON。

为此,您可以尝试直接从cURLpostman致电您的服务器,看看您获得的回报。

希望对你有所帮助。