我正在尝试通过Clear Read API运行一堆 URL (基本上是从 URL 中提取文章部分),并且我正在使用AFNetworking Library。
我有一个AFClearReadClient
类,它是AFHTTPClient
我用来简化与 API 交互的子类。在那里我设置了基本 URL,事实上它是一个 JSON 请求。
#import "AFClearReadClient.h"
#import "AFJSONRequestOperation.h"
@implementation AFClearReadClient
+ (AFClearReadClient *)sharedClient {
static AFClearReadClient *sharedClient = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedClient = [[AFClearReadClient alloc] initWithBaseURL:[NSURL URLWithString:@"http://api.thequeue.org/v1/clear?url=&format="]];
});
return sharedClient;
}
- (id)initWithBaseURL:(NSURL *)url {
if (self = [super initWithBaseURL:url]) {
[self registerHTTPOperationClass:[AFJSONRequestOperation class]];
[self setDefaultHeader:@"Accept" value:@"application/json"];
}
return self;
}
然后我有一个存储在NSDictionary
我循环的文章列表,获取每篇文章的 URL,从中为即将发生的请求制作参数(参数是 GET 变量及其在基本 URL 中的值,对吗?),然后创建请求,并将其添加到包含所有请求的数组中。
然后我将它们批量入队(我认为我做的不对)。这会创建每个请求并将其排入队列,从而将它们置于被执行的过程中,对吧?但是我在progressBlock 中做什么呢?我无权访问返回的 JSON(似乎本地变量只是NSUIntegers
),所以我无法做我想做的事情(保存返回的文章文本)。
- (void)addArticlesToQueueFromList:(NSDictionary *)articles {
// Create an array to hold all of our requests to make
NSMutableArray *requests = [[NSMutableArray alloc] init];
for (NSString *key in articles) {
NSString *articleURL = [[articles objectForKey:key] objectForKey:@"resolved_url"];
NSDictionary *requestParameters = @{@"url": articleURL,
@"format": @"json"};
NSMutableURLRequest *request = [[AFClearReadClient sharedClient] requestWithMethod:@"GET" path:nil parameters:requestParameters];
[requests addObject:request];
}
// [[AFClearReadClient sharedClient] setMaxConcurrentOperationCount:5];
[[AFClearReadClient sharedClient] enqueueBatchOfHTTPRequestOperationsWithRequests:[requests copy] progressBlock:^(NSUInteger numberOfFinishedOperations, NSUInteger totalNumberOfOperations) {
} completionBlock:^(NSArray *operations) {
}];
}
另外,我不确定我应该如何使用该setMaxConcurrentOperationCount:
方法。应该在AFClearReadClient
课堂上做吗?