这是我对 REST api 执行 GET 请求的代码。
如果出现错误,我不确定如何取回消息:
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
NSURL *URL = [NSURL URLWithString:urlString];
[request setURL:URL];
[request setHTTPMethod:@"GET"];
NSError *err = nil;
NSHTTPURLResponse *res = nil;
NSData *retData = [NSURLConnection sendSynchronousRequest:request returningResponse:&res error:&err];
if (err) // This part is never called.
{
NSLog(@"Error: %@", err);
}
else
{
if (res.statusCode != 200)
{
// show the user the status message
NSLog(@"Error: %@", res); // This part is called
}
else
{
}
}
如果不成功,我想收到错误消息。但 if (err)
block 永远不会被调用。尽管状态代码为 400,但 err 仍然为 null。
如果成功,我将收到一个 json 响应。
在上面的代码中,我得到了 400 的 statusCode
最佳答案
不会调用错误 block ,因为仅当发生系统级错误时才会创建错误对象。不会发生这种情况,因为请求已正确发送并且服务器发送了响应。如果您控制服务器,您可能应该让它返回状态代码 200 并在响应中包含应用程序级别状态代码,这将告诉您的应用程序输入的凭据不正确。
编辑:
要获取状态消息,您可以使用
+ (NSString *)localizedStringForStatusCode:(NSInteger)statusCode
这是 NSHTTPURLResponse 类的类方法。
if (res.statusCode != 200)
{
// show the user the status message
NSLog(@"Error: %@", [NSHTTPURLResponse localizedStringForStatusCode: res.statusCode]); // This part is called
}
关于iOS HTTP 请求 - 获取错误响应消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16708899/