【发布时间】:2014-10-08 13:52:45
【问题描述】:
我正在尝试使用 Swift 构建一个非常基本的 iOS 应用程序 - 这是我第一次这样做。尽管其中大部分内容都非常简单。让应用程序与我的 API 或任何一般网站对话,我做了一场噩梦!
这是我正在使用的代码,特别是出错的代码:
NSURLConnection.sendAsynchronousRequest(request, queue: queue, completionHandler:{ (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
})
出错的是 'NSString(data: data, encoding: NSUTF8StringEncoding)'
我已经阅读了尽可能多的教程,但它们都给我同样的问题。我收到一条错误消息:
NSURLErrorDomain - 代码:4294966291
我还收到“EXC_BAD_INSTRUCTION”错误:EXC_1386_INVOP,子代码 = 0x0(这并没有让我找到解决方案...
这让我觉得我在设置中没有做正确的事情,或者我的偏好中应该打开某些东西,或者与我的代码相反的东西......
这是我的全部代码:
var URL: NSURL = NSURL(string: "http://stackoverflow.com")
var request:NSMutableURLRequest = NSMutableURLRequest(URL:URL)
request.HTTPMethod = "POST"
var bodyData = "key1=value&key2=value&key3=value"
println(URL)
println(bodyData)
request.HTTPBody = bodyData.dataUsingEncoding(NSUTF8StringEncoding);
let queue:NSOperationQueue = NSOperationQueue()
NSURLConnection.sendAsynchronousRequest(request, queue: queue, completionHandler:{ (response: NSURLResponse!, data: NSData!, error: NSError!) -> Void in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
})
更新:
使用 Rob 的代码,我知道会打印错误:
sendAsynchronousRequest 错误:错误域=NSURLErrorDomain 代码=-1005“网络连接丢失。” UserInfo=0x7beafcc0 {NSErrorFailingURLStringKey=http://stackoverflow.com, _kCFStreamErrorCodeKey=57, NSErrorFailingURLKey=http://stackoverflow.com, NSLocalizedDescription=网络连接丢失。, _kCFStreamErrorDomainKey=1, NSUnderlyingError=0x7d154ca0 "网络连接丢失。"}
【问题讨论】:
-
您在发布之前更改了网址吗?以上对我有用。我总是设置
Content-Type,例如request.setValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type"),但我认为这不是问题所在。 -
这就是我的代码!
-
接下来我将使用Charles 运行它,看看响应是什么样的。
-
我可能还建议尝试使用不同的 URL(查看问题是否是 Stack Overflow 服务器的响应)。底线,除了缺少错误处理(您现在显然已经添加)和缺少
Content-Type之外,我看不到上述代码有任何问题。如果我们无法重现问题,则很难诊断。 -
好的,谢谢 Rob 的帮助!!
标签: ios swift nsurlconnection nsurlerrordomain exc-bad-instruction