如何访问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.
}
答案 0 :(得分:0)
你可以试试这个 -
- (void)requestFinished:(ASIHTTPRequest *)request {
NSLog(@"Response %d ==> %@", request.responseStatusCode, [request responseString]);
}
如果您选择,您还可以处理其他方法,例如:
- (void)requestStarted:(ASIHTTPRequest *)request;
- (void)requestFailed:(ASIHTTPRequest *)request;
答案 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中的公共函数。