我試圖通過Clear Read API(基本上從網址中提取文章部分)運行一堆網址,並使用AFNetworking Library。使用AFNetworking和AFHTTPClient通過API運行多個URL - 我做錯了什麼?
我有一個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
課上完成嗎?
也許你應該使用'enqueueBatchOfHTTPRequestOperations:progressBlock:completionBlock:' – tassar 2013-03-25 03:59:59
這實際上並沒有什麼不同的方法,它只是使得它必須在使用該方法之前創建請求操作,而使用那個方法將從您的請求中爲您創建。 – 2013-03-25 04:06:03