什么是Web服务需要做的,使NSURLConnection's
代表接收connection:didFailWithError:
消息?
例如:iOS应用传递令牌到Web服务,Web服务查找令牌,然后将Web服务需要与一个错误说“无效令牌”或类似的东西作出反应。
目前,该数据被接收,并在“ connectionDidFinishLoading
:”解析错误消息。 这意味着我的错误在两个地方,而我试图避免检查。
我有我的完全控制下,无论是iOS应用和Web服务。
什么是Web服务需要做的,使NSURLConnection's
代表接收connection:didFailWithError:
消息?
例如:iOS应用传递令牌到Web服务,Web服务查找令牌,然后将Web服务需要与一个错误说“无效令牌”或类似的东西作出反应。
目前,该数据被接收,并在“ connectionDidFinishLoading
:”解析错误消息。 这意味着我的错误在两个地方,而我试图避免检查。
我有我的完全控制下,无论是iOS应用和Web服务。
根据我的经验(这三个节目中最危险的话), -connection:didFailWithError:
只有当HTTP交换失败调用。 这通常是网络错误或可能的身份验证错误(我不使用身份验证)。 如果HTTP消息成功,无论是响应代码, -connectionDidFinishLoading:
被调用。
我的解决办法:拨打-connection:didFailWithError:
当我发现一个错误。 这样,我所有的错误处理代码是在一个地方。
在我顶-connectionDidFinishLoading:
我有:
NSError *error;
NSDictionary *result = [self parseResultWithData:self.connectionData error:&error];
if (!result) {
[self connection:connection didFailWithError:error];
return;
}
有许多关于其委托的连接条件:didFailWithError:NSURLConnection的可能invoke.Here的人的名单错误或常量 。我觉得一个alertview会更好,以显示连接HTTP错误:didFailWithError :.
-(void) connection:(NSURLConnection *)connection didFailWithError: (NSError *)error
{
UIAlertView *errorAlert= [[UIAlertView alloc] initWithTitle: [error localizedDescription] message: [error localizedFailureReason] delegate:nil cancelButtonTitle:@"Done" otherButtonTitles:nil];
[errorAlert show];
[errorAlert release];
NSLog (@"Connection Failed");
}
虽然不直接关系到你的问题,我会鼓励你移动到一个更高的水平库。 我非常乐意推荐AFNetworking,它是生产做好准备,我已经在很多项目中使用它。 这将允许你检查的不良区的每个请求的响应代码。 该项目还抽象了很多,否则你将被要求写网络通信水平低处理; 我在这里讲的有关分析和创建XML / JSON字符串与服务进行通信。
为了让大家更集中回答你的问题,我会打电话的cancel
您NSURLConnection的方法,一旦你已经注意到一个错误connectionDidFinishLoading:
这将自动取消该请求,并调用该委托对象的故障的方法。
为NSURLConnection的文档是相当干燥,和委托的失败的方法并没有具体记载的故障的情况。 您可以找到更多信息, 网址加载系统编程指南 。
我不能只见树木不见的阿甘。
我需要从退一步connection:didFailWithError:
看看不同的委托方法connection:didReceiveResponse:
随着全我的控制下的Web服务,端点可以用一个500个状态码,其获取拿起回应connection:didReceiveResponse
,并沿着一些JSON进一步说明情况,这被捡起和处理通过connection:didReceiveData:
该NSURLConnection的委托挂到整个过程状态的夫妇更位,但它有最佳的代码味道到目前为止,我已经找到。
杰弗里的回答是迄今为止最正确的: 在connection:didFailWithError:
回调仅是相对于网络的失败,从Web服务的任何响应意味着连接没有失败!