多个iOS GET请求(动态请求数)
我正在使用一个在线API来检索随机的名言。在我的代码中,我使用:多个iOS GET请求(动态请求数),ios,xml,nsmutableurlrequest,Ios,Xml,Nsmutableurlrequest,我正在使用一个在线API来检索随机的名言。在我的代码中,我使用: NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urloftheapi] cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCache
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:urloftheapi]
cachePolicy:NSURLRequestReloadIgnoringLocalAndRemoteCacheData timeoutInterval:60];
[request setHTTPMethod:@"GET"];
NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
[connection start];
[connection release];
然而,我希望它可能不止一个引用。该API不包含用于多个引号的函数,因此我需要运行多个
NSMutableURLRequest
,才能获得全部内容。然而,由于它可能是一个请求,也可能是多个请求,所以我不确定在代码中实现这一点的最佳方法。想法?根据API的设置方式,您可以执行一个请求来获取引号列表(即引号的数组/字典等)。从那里,您可以循环使用所有quoteID,并通过quotes ID属性执行特定请求以获取每个quote
如果没有对API的描述,几乎不可能给出准确的答案,但我刚才描述的是解决这些问题的一般方法
1) 请求获取报价列表(仅其主键/唯一id)
2) 循环检查前一个请求中的所有id,并发出一个特定的请求,以通过哪个id获取报价
使用AFNetworking库,它看起来像这样。请记住,请求是在不同的线程中处理的,因此您可能希望设置一个NSNotification,以跟踪您何时完成获取每个报价和/或跟踪报价总数(外部循环)和当前请求的单个报价(内部循环)。通过比较这两个计数,你可以知道你什么时候完成了
NSMutableArray *allQuotes = [[NSMutableArray alloc] init];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSString *url = @"www.whatever.com/api/quotes";
[manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSArray *quoteList = (NSArray *)responseObject;
for(NSString *quoteID in quoteList)
{
[manager GET:url parameters:@{@"quoteID":quoteID} success:^(AFHTTPRequestOperation *operation, id responseObject) {
[allQuotes addObject:responseObject];
[NSNotificationCenter defaultCenter] postNotificationName:@"FINISHED_GETTING_QUOTE" object:allQuotes];
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//Handle failure here...
}];
}
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
//Handle failure here...
}];
抱歉没有在OP中发布详细信息。API只允许检索每个调用的1个随机报价。我继续设置了一个循环来反复运行这个方法,基于应用程序的一些其他细节,这些细节将设置整数的次数。将所有返回的引号循环到一个数组或字符串中的最佳方法是什么?我将设置一个全局NSMutableArray作为属性。这可以通过在.h中添加“@property(nonatomic,strong)NSMutableArray*allQuotes”(不带引号obv)来实现。每次获取报价的请求完成后,只需通过在您的示例中执行“[allQuotes addObject:newString]”将返回的NSString附加到该全局数组中,我如何告诉它循环请求多少次,比如获得5个随机报价?
-(void)finishedGettingQuotes:(NSNotification *)notification
{
if(currentRequest == totalRequests)
{
NSMutableArray *temp = notification.object;
}
}