【发布时间】:2015-01-25 09:25:09
【问题描述】:
我正在使用以下代码将图像发布到我的服务器。
@IBAction func postButtonPressed(sender: UIButton) {
let task = NSURLSession.sharedSession().dataTaskWithRequest(createRequest("http://xx.xx.xxx.xxx/xxxx/"), completionHandler: {
data, response, error in
println(NSString(data: data, encoding: NSUTF8StringEncoding))
})
task.resume()
}
createRequest() 创建所需的 NSURLRequest 对象。
当我使用模拟器时效果很好。问题是当我在 iPhone 上运行我的应用程序时出现以下错误。
Error Domain=NSURLErrorDomain Code=-1001 "The operation couldn’t be completed. (NSURLErrorDomain error -1001.)" UserInfo=0x155e71f0 {NSErrorFailingURLKey=http://xx.xxx.xxx.xxx/xxxx/, NSErrorFailingURLStringKey=http://54.148.156.117/query/, NSUnderlyingError=0x155674d0 "The operation couldn’t be completed. (kCFErrorDomainCFNetwork error -1001.)"}
我了解到这个错误是超时错误。重新启动应用程序或手机没有帮助。此外,我尝试从网络浏览器将图像发布到我的服务器,并且没有问题。
什么可能导致这个超时错误?
编辑:当我监控我的网络活动时,我意识到应用程序发送了 10 MB 数据,即使我发送的图像是 0.1 MB。
【问题讨论】:
-
好吧,我们可能需要查看创建与请求一起发送的数据的代码。如果问题是它比您预期的大 100 倍,那么该代码可能有问题。
-
我发现当我尝试发布由 UIImagePicker 拍摄的图像时会出现问题。当我发布之前添加到 images.xcassets 文件夹的图像时,它工作正常。你知道为什么会发生这种情况吗?
-
这些图片有多大大?查看创建它们的代码会很有帮助。 (尝试记录您发送到服务器的 NSData 对象的
length属性...) -
哇,uiImagePicker 拍摄的图像是 14 MB,而我的 images.xcassets 文件夹中的图像是 1.5 MB。现在事情越来越清楚了
-
好的,解决了。服务器最多接受 2 MB。我将缩小我的图像以将图像大小降低到 2 MB 以下。
标签: ios swift nsurlsession nsurlerrordomain