Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

NSURLErrorDomain with code=-1100

I was trying to download a picture to my app from

enter image description here The request failed with the error NSURLErrorDomain and the code is really -1100. The url should be correct since I checked it in the browser. Anyone knows why?

let userImageURL: String! = "http://i.imgur.com/QhCzQoR.jpg";
let url = NSURL(fileURLWithPath: userImageURL);
let request:NSURLRequest = NSURLRequest(URL: url!)
NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.mainQueue(), completionHandler: { (response:NSURLResponse!, imageData:NSData!, error:NSError!) -> Void in
                let image = UIImage(data: imageData!);
 })
like image 561
Lu Zheng Avatar asked Feb 01 '15 20:02

Lu Zheng


2 Answers

The reason you are getting this problem is because you have used

let url = NSURL(fileURLWithPath: userImageURL);

Instead you should use:

let url = NSURL(string: userImageUrl)
like image 90
Reedy Avatar answered Nov 03 '22 04:11

Reedy


I code in Objective-C, it should be easy to convert it in Swift (small modification in fact, but the explanation is not that much related to code). If you check the error complete message, you'll get:

Error Domain=NSURLErrorDomain Code=-1100 "The requested URL was not found on this server." UserInfo=0x7997b7e0 {NSErrorFailingURLStringKey=file:///http:/i.imgur.com/QhCzQoR.jpg, NSErrorFailingURLKey=file:///http:/i.imgur.com/QhCzQoR.jpg, NSLocalizedDescription=The requested URL was not found on this server., NSUnderlyingError=0x799f3080 "The requested URL was not found on this server."}

Clearly, if you look carefully at the URL, you have file:///http:/i.imgur.com/QhCzQoR.jpg, which is not the URL wanted. If you log url.absoluteString, you'll see it to your URL, it's you that set it like this.

Why? Because you used fileURLWithPath: instead of URLWithString:. So change your line with:

let url = NSURL(URLWithString: userImageURL);

Some discussions about the differences between theses two: What is difference between URLWithString and fileURLWithPath of NSURL? or the doc.

Update: In Swift 4:

let url = URL(string: userImageURL)

We also recommend from Swift3+ to avoid NSStuff when there is Swift Equivalent: NSURL => URL.

like image 44
Larme Avatar answered Nov 03 '22 02:11

Larme