我需要从三个不同的网址下载三组不同的数据。我决定使用ASIHTTPRequest。其中两个URL是我需要解析的JSON提要,其中一个是我在线存储的.txt文件。
现在ASIHTTPRequest网站上针对异步请求的示例显示以下内容:
- (IBAction)grabURLInBackground:(id)sender {
NSURL *url = [NSURL URLWithString:@"http://allseeing-i.com"];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];
[request startAsynchronous];
}
要传递多个网址,我可以在三个不同的网址上调用“请求”。但我不确定如何在requestFinished
方法中处理它们。文档显示为:
- (void)requestFinished:(ASIHTTPRequest *)request {
// Use when fetching text data
NSString *responseString = [request responseString];
// Use when fetching binary data
NSData *responseData = [request responseData];
}
这种方法如何区分不同的请求,以便我能以不同的方式处理它?</ p>
谢谢,
答案 0 :(得分:12)
您可以通过
区分不同的请求答案 1 :(得分:3)
您只需要两段代码。一个'标记'您的网址:
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
[request setUserInfo:[NSDictionary dictionaryWithObjectsAndKeys:@"identifierX", @"typeOfRequest",nil]];
和另一个识别它:
if ([[[request userInfo] valueForKey:@"typeOfRequest"] isEqualToString:@"identifierX"]){
// Do here whatever you need to do for the url associated with identifierX
}
那应该是它!
答案 2 :(得分:1)
您可以设置要求的用户名和标记。
这是imageview的例子。 REQ。
UIImageView *imgV=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 416)];
ASIHTTPRequest *req=[ASIHTTPRequest requestWithURL:[NSURL URLWithString:[self.arr objectAtIndex:i]]];
[req setUsername:[NSString stringWithFormat:@"%i",i]];
[req setUserInfo:[NSDictionary dictionaryWithObjectsAndKeys:imgV,@"imgV",nil]];
[req setDelegate:self];
[req startAsynchronous];
[imgV setContentMode:UIViewContentModeScaleToFill];
[imgV setClipsToBounds:YES];
[imgV setTag:kTagImageViewInScrollView];
[scr2 addSubview:imgV];
[scr2 setDelegate:self];
[imgV release]; imgV=nil;
和requestFinished
- (void)requestFinished:(ASIHTTPRequest *)request {
[(UIImageView*)[[request userInfo] valueForKey:@"imgV"] setImage:[UIImage imageWithData:[request responseData]]];
}
答案 3 :(得分:1)
如果您有不同的URL,则可以检查ASIHTTPRequest的originalURL属性。
或者您可以使用[request hash]获取每个对象的NSObject哈希并稍后检查。