Eu tenho um NSURLRequest simples:
[NSURLConnection sendAsynchronousRequest:myRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
// do stuff with response if status is 200
}];
Como obtenho o código de status para ter certeza de que a solicitação foi ok?
ios
objective-c
inorganik
fonte
fonte
Respostas:
Converta uma instância de
NSHTTPURLResponse
da resposta e use seustatusCode
método.[NSURLConnection sendAsynchronousRequest:myRequest queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) { NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response; NSLog(@"response status code: %ld", (long)[httpResponse statusCode]); // do stuff }];
fonte
NSHTTPURLResponse
ou vale a pena verificar comisKindOfClass:
ourespondsToSelector:
?Whenever you make an HTTP request, the NSURLResponse object you get back is actually an instance of the NSHTTPURLResponse class.
No Swift com iOS 9, você pode fazer isso desta maneira:
if let url = NSURL(string: requestUrl) { let request = NSMutableURLRequest(URL: url, cachePolicy: NSURLRequestCachePolicy.ReloadIgnoringLocalAndRemoteCacheData, timeoutInterval: 300) let config = NSURLSessionConfiguration.defaultSessionConfiguration() let session = NSURLSession(configuration: config) let task = session.dataTaskWithRequest(request, completionHandler: { (data, response, error) -> Void in if let httpResponse = response as? NSHTTPURLResponse { print("Status code: (\(httpResponse.statusCode))") // do stuff. } }) task.resume() }
fonte
Swift 4
let task = session.dataTask(with: request, completionHandler: { data, response, error -> Void in if let httpResponse = response as? HTTPURLResponse { print("Status Code: \(httpResponse.statusCode)") } }) task.resume()
fonte