我对这种方法感到困惑,特别是对错误部分和文档感到困惑。在这份文件上,它说
如果请求成功完成,则处理程序块的数据参数包含资源数据,错误参数为零。如果请求失败,则数据参数为零,错误参数包含有关故障的信息。
问题是,我已经看到一些http响应错误代码属于“有错误”,而有些则没有,而且我可以同时拥有数据和错误(但根据文档,应该始终为零)。
[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?
}发布于 2014-07-14 13:39:50
根据我的经验,当服务器根本没有响应时,就会发生错误,这就是数据为0的原因。如果服务器返回400或500错误,那么这些都是来自服务器的响应,取决于服务器代码,可能是您可以解析的错误消息。
https://stackoverflow.com/questions/24733350
复制相似问题