NSURLConnection sendAsynchronousRequest什么被认为是错误



我对这种方法感到困惑,特别是关于错误部分和文档。文档中说

如果请求成功完成,则返回处理程序块包含资源数据,错误参数为nil。如果请求失败,则data参数为nil并出现错误参数包含失败信息。

问题是,我已经看到一些http响应错误代码落入"有一个错误",有些不,此外,我可以有数据和错误在同一时间(但据说一个应该是nil在任何时候根据文档)。

[NSURLConnection sendAsynchronousRequest:theRequest
                                       queue:[[NSOperationQueue alloc] init]
                           completionHandler:^(NSURLResponse *response, NSData *data, NSError *error)

例如,如果用户使用了错误的凭据,我的服务器发送一个401响应,这被缓存在error子句中,但是如果我发送一个409(重复条目),它不会缓存。我有一些问题重定向流,因为这个,我不确定这个方法会考虑一个错误,什么不会。

另外,我如何正确地检查这个?,我认为仅仅检查是否有错误,然后检查响应的代码就足以显示消息或采取操作,但正如我之前所描述的,一些"错误"代码不一定会生成错误对象。我应该先检查状态码吗?

NSHTTPURLResponse* httpResponse = (NSHTTPURLResponse*)response;
int responseStatusCode = [httpResponse statusCode];
if (responseStatusCode == 200)
{
    // If 200, assume everything went well?
} else
{
    // Something went wrong, check for the code and the error here?
}

根据我的经验,当服务器根本没有响应时就会发生错误,这就是数据为0的原因。如果服务器返回400或500错误,那么这些是来自服务器的响应,根据您的服务器代码,可能是您可以解析的错误消息。

最新更新