在requestFailed函数ASIHttpRequest内发送的访问请求数据

时间:2012-02-24 10:41:22

标签: objective-c asihttprequest

如何访问requestFailed / requestFinished函数发出的请求发送的(POST)数据。

-  (void) abc {  
    NSString *postString = @"john";  
    NSURL *url = [NSURL URLWithString:@"http://abc.com"];  
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];  
    [request setPostValue:postString forKey:@"name"];  
    [request setDelegate:self];  
    [request startAsynchronus];  
}  
- (void) requestFinished:(ASIHTTPRequest *)request  
{   
    // Question is whether the request holds the sent post values.  
    // If it holds. how can we access them.  
    // i tried using [request valueForKey:@"name"];  
    // but it won't work.  
}  

3 个答案:

答案 0 :(得分:0)

你可以试试这个 -

- (void)requestFinished:(ASIHTTPRequest *)request {
   NSLog(@"Response %d ==> %@", request.responseStatusCode, [request responseString]);
}

如果您选择,您还可以处理其他方法,例如:

- (void)requestStarted:(ASIHTTPRequest *)request;
- (void)requestFailed:(ASIHTTPRequest *)request;

文档位于http://allseeing-i.com/ASIHTTPRequest/,非常棒。

答案 1 :(得分:0)

  

在委托方法中处理多个请求的成功与失败

     

如果你需要处理许多不同类型的成功和失败   请求,您有几种选择:

     

如果您的请求都是相同的广泛类型,但您想要   区分它们,可以设置userInfo NSDictionary   每个请求的属性,您可以使用自己可以阅读的自定义数据   在已完成/失败的委托方法中。对于更简单的情况,您可以   改为设置请求的标签属性。这两个属性都是   供您自己使用,不会发送到服务器。

     

如果您需要以完全不同的方式处理成功和失败   请求,为其设置不同的setDidFinishSelector / setDidFailSelector   每个请求对于更复杂的情况,或者您要解析的位置   在后台响应,创建一个最小的子类   针对每种类型的请求的ASIHTTPRequest,并覆盖requestFinished:   和failWithError:。

这为我提供了处理不同请求的良好解决方案。

答案 2 :(得分:0)

您可以将请求转换为ASIFormDataRequest:

if ([request isKindOfClass:[ASIFormDataRequest class]]) {
   ASIFormDataRequest *requestWithPostDatas = (ASIFormDataRequest *)request;
   NSArray *myPostData = [requestWithPostDatas getPostData];
}

你还必须制作" postData"使用" getPostData" ASIFormDataRequest中的公共函数。