1

我对网络和使用 AFNetworking 完全陌生。我正在尝试为 iPhone 编写一个小型 Craigslist 客户端。到目前为止,我的网络代码如下:

NSArray *fetchedData = [_fetchedResultsController fetchedObjects];
for (NHXsearch *search in fetchedData) {
    NSURL *url = [NSURL URLWithString:search.searchURL];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];

    AFHTTPRequestOperation *operation = [[AFHTTPRequestOperation alloc] initWithRequest:request];

    operation.responseSerializer = [AFHTTPResponseSerializer serializer];
    operation.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"];

    [operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
        NSLog(@"Success! %@", responseObject);

    }failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Failure, %@", error);
    }];

    [_queue addOperation:operation];
}

_isLoading = NO;
[self.tableView reloadData];

因此,我的代码在 fetched results 控制器中进行了所有搜索,并使用它们的每个 searchURL 属性作为 AFHTTPResponseSerializer 的 url。

当我将它们粘贴到我的浏览器中时,链接可以正常工作,并且相当于使用对象的属性进行搜索,然后单击 craigslist 的 RSS 按钮。但是,尽管使用 AFXMLParserResponseSerializer 对页面进行了 XML 格式(?),但我得到了以下信息:

{状态码:404,标头{}},NSUnderlyingError=0x1095b3440“请求失败:不可接受的内容类型:文本/纯文本”}

当我切换到 AFHTTPResponseSerializer 并添加 operation.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/plain"]; 我得到:

失败,错误域=AFNetworkingErrorDomain 代码=-1011“请求失败:未找到 (404)”UserInfo=0x1095055e0 {AFNetworkingOperationFailingURLResponseErrorKey= { URL:http ://richmond.craigslist.org/search/sss?query=xbox&s=0&sort=date&format =rss } { 状态码:404,标头 { } },NSLocalizedDescription=请求失败:未找到 (404),NSErrorFailingURLKey= http://richmond.craigslist.org/search/sss?query=xbox&s=0&sort=date&format=rss }

我很困惑如何去做。我尝试使用 SMXML 和 SMXMLDocumentResponseSerialization,这给了我成功,但也给了我 <(null)/> 作为 responseObject。任何帮助,将不胜感激。

4

0 回答 0