Swift:能够通过WiFi而不是通过Cellullar网络发出HTTP请求

Yao*_*hai 5 ios ios7 swift xcode6

我正在关注swift教程 http://jamesonquave.com/blog/making-a-post-request-in-swift/

这是我用来进行http调用的代码:

func post(params : Dictionary<String, String>, url : String, postCompleted : (succeeded: Bool, msg: String) -> ()) {
    var request = NSMutableURLRequest(URL: NSURL(string: url))
    var session = NSURLSession.sharedSession()
    session.configuration.allowsCellularAccess = true
    request.HTTPMethod = "POST"

    var err: NSError?
    request.HTTPBody = NSJSONSerialization.dataWithJSONObject(params, options: nil, error: &err)
    if (err != nil)
    {println("An error occurred during conversion to JSON")}
    println(request.HTTPBody)
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")
    //request.addValue("application/json", forHTTPHeaderField: "Accept")

    var task = session.dataTaskWithRequest(request, completionHandler: {(data:NSData!, response:NSURLResponse!, error: NSError!) -> Void in
        println("Response: \(response)")
        var strData = NSString(data: data, encoding: NSUTF8StringEncoding)
        println("Body: \(strData)")
        var msg = "No message"

        println(response)
        var respHTTP = response as? NSHTTPURLResponse
        if (respHTTP?.statusCode == 200)
        {
            println("Command executed.")
            postCompleted(succeeded: true, msg: "Command Executed.")
        }
        else
        {
            println("Command not executed.")
            postCompleted(succeeded: false, msg: "Command NOT Executed. \(respHTTP?.statusCode)")
        }
    })

    task.resume()
}
Run Code Online (Sandbox Code Playgroud)

它可以完美地与WiFi连接配合使用,但是由于某些原因不能与WWAN连接配合使用。该请求似乎没有解决。请分享错误的建议,或者我需要在系统级别进行配置?

我在iPhone 6上使用Xcode 6和iOS 8,但在装有iOS 7.1的iPhone 5s上进行了测试,得到了相同的结果。

另外:错误NSError!域:“ NSURLErrorDomain”-代码:18446744073709550615 0x00000001700571f0调用完成处理程序,并附加了错误消息。响应为零

已添加:错误域= NSURLErrorDomain代码= -1001“操作无法完成。(NSURLErrorDomain错误-1001。)” UserInfo = 0x17027d680 {NSErrorFailingURLStringKey = xx.xx.xx.xx:8080 / carservices / CloseCar,NSUnderlyingError = 0x174059890 “操作无法完成。(kCFErrorDomainCFNetwork错误-1001。)”,NSErrorFailingURLKey = xx.xx.xx.xx:8080 / carservices / CloseCar}

我发现错误代码是超时代码,NSURLErrorTimedOut = -1001,但想知道为什么它适用于WiFi但现在适用于WWAN ...