可可错误3840无法完成操作

时间:2014-07-19 07:19:45

标签: php ios json cocoa swift

我正在尝试连接到我的localhost API(我需要与iOS swift应用程序一起构建),它返回一个json字符串。 API是用Laravel 4框架编写的。

以下是连接和接收代码的iOS Swift代码:

func checkEmail() {
    var request = NSMutableURLRequest(URL: NSURL(string: "http://localhost:3306/laravel/rojectapi/checkEmail"))
    var session = NSURLSession.sharedSession()

    request.HTTPMethod = "POST"

    var params = ["email":"myemail@me.com", "password":"password"] as Dictionary

    var err: NSError?
    request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err)
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    request.addValue("application/json", forHTTPHeaderField: "Accept")

    var task = session.dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
        println("Response: \(response)")
        var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
        println("Body: \(strData)")
        var err: NSError?
        var json = NSJSONSerialization.JSONObjectWithData(data, options: .MutableLeaves, error: &err) as NSDictionary

        println("hey")

        if(err) {
            println(err!.localizedDescription)
        }
        else {
            var success = json["success"] as? Int
            println("Success: \(success)")
        }
        })

    task.resume()

}

Laravel PHP路线:

Route::post('/checkEmail', array(
'as' => 'checkEmail',
'uses' => 'FrontEndController@checkEmail'
));

然后是带有checkEmail方法的前端控制器:

public function checkEmail() {

    $validator = Validator::make(Input::all(), array(
        'email' => 'required|unique:users|email'
    ));

    if($validator->fails()) {
        return $validator->messages()->toJson();
    } else {
        return Response::json(array('success' => true));
    }

}

我没有正确连接到服务器吗?我需要在连接到笔记本电脑的iPhone 5s以及模拟器中这样做。我在网址中尝试了name.locallocalhost:<post>name.local:<post>

更新

我从this tutorial

获得了代码

3 个答案:

答案 0 :(得分:3)

在Swift中传递NSJSONReadingAllowFragments.AllowFragments)或正确格式化JSON。

一个简单的谷歌搜索显示错误3840是由于格式不正确的JSON传递给iOS JSON解析器引起的。

答案 1 :(得分:0)

如果API期待您的某些数据并且您无法发送它或APi没有收到它,则会发生这种情况,尝试回收API接收的参数作为对iOS的响应请求,如果您的APi实现中存在一些错误,也可能会出现这种情况,尽管您可能会在Web控制台中看到此错误。

答案 2 :(得分:0)

当我向项目中的本地化添加语言时,我有这个错误。当我添加语言时,必须更改&#34;可本地化的字符串&#34;到&#34;接口构建器故事板&#34;。我是指iOS应用程序的项目。可以帮到你。