ASIHTTP请求在日志中失败,但requestFailed未被调用

时间:2010-08-11 21:57:06

标签: iphone objective-c json networking asihttprequest

我有

-(void)requestFailed:(ASIHTTPRequest *)request
{
    NSError *error = [request error];
    NSLog(@"Request Failed Error: %@", error);
}

当我提出要求时,我

    //add data to the array
    NSString *json = [array JSONRepresentation];
[request appendPostData:[json dataUsingEncoding:NSUTF8StringEncoding]];

[request startAsynchronous];

我在日志中收到了这个:

 0-08-11 16:52:11.652 MyProject[11720:207] Starting asynchronous request <ASIHTTPRequest: 0x5a7df10>

2010-08-11 16:52:11.861 MyProject [11720:207]请求已完成下载数据 2010-08-11 16:52:11.861 MyProject [11720:207]请求失败: (gdb)

但我的日志声明在

 -(void)requestFailed

没有被调用。有什么想法吗?

干杯

2 个答案:

答案 0 :(得分:1)

您是否设置了请求的delegatedidFailSelector属性?一般:

[request setDelegate:self];
[request setDidFailSelector:@selector(requestFailed:)];
如果-requestFailed:方法在同一个类实现文件中,

就足够了。

同时设置didFinishSelector属性以在请求正确完成时调用本地选择器。

答案 1 :(得分:1)

-requestFailed:仅在无法完成请求时返回 - 例如。无法联系服务器,或服务器不符合http协议。

如果请求可以完成,将调用requestFinished,然后您可以检查那里的http状态代码,这可能表示失败。 responseStatusText可以提供有关失败原因的更多信息。