Check if NSURL returns 404

后端 未结 4 1666
孤独总比滥情好
孤独总比滥情好 2020-12-02 17:51

I need to check whether a URL (represented by a NSURL) is available or returns 404. What is the best way to achieve that?

I would prefer a way to check this without

4条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-02 18:22

    As you may know already that general error can capture by didFailWithError method:

    - (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
        NSLog(@"Connection failed! Error - %@ %@",
              [error localizedDescription],
              [[error userInfo] objectForKey:NSErrorFailingURLStringKey]);
    }
    

    but for 404 "Not Found" or 500 "Internal Server Error" should able to capture inside didReceiveResponse method:

    - (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
        if ([response respondsToSelector:@selector(statusCode)])
        {
            int statusCode = [((NSHTTPURLResponse *)response) statusCode];
            if (statusCode == 404)
            {
                [connection cancel];  // stop connecting; no more delegate messages
                NSLog(@"didReceiveResponse statusCode with %i", statusCode);
            }
        }
    }
    

提交回复
热议问题