AFHTTPClient postPath返回AFHTTPRequestOperation而不是AFJSONRequestOperation

时间:2012-10-10 06:36:40

标签: ios afnetworking

当我用AFHHTPClient以这种方式从服务器请求数据时:

[[NetworkHelper sharedHelper] postPath:path parameters:parameters] success:^(AFHTTPRequestOperation *operation, id responseObject) {
                NSLog(@"%@", [operation class]);
                NSLog(@"%@", [responseObject class]);
            } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
                NSLog(@"%@", [error localizedDescription]);
            }];

我明白了:

2012-10-10 13:24:36.881 MyApp[4635:c07] AFHTTPRequestOperation
2012-10-10 13:24:36.881 MyApp[4635:c07] NSConcreteData

我尝试在服务器的响应中强制application/json内容类型,但我仍然有AFHTTPRequestOperation

但如果我使用它:

[[AFJSONRequestOperation JSONRequestOperationWithRequest:[NSURLRequest requestWithURL:myURL] success:^(NSURLRequest *request, NSURLResponse *response, id JSON) {
                NSLog(@"%@", JSON);
            } failure:^(NSURLRequest *request, NSURLResponse *response, NSError *error, id JSON) {
                NSLog(@"%@", [error localizedDescription]);
            }] start];

我得到了我需要的JSON响应。

如何使用AFHTTPClient获取JSON响应?

更新

我在NSLog(@"%@",[self.response MIMEType]);课程的- (BOOL)hasAcceptableContentType方法中添加了AFHTTPRequestOperation,我收到了

2012-10-11 09:48:25.052 MyApp[3339:3803] application/json

但我仍然可以AFHTTPRequestOperation上课。

2 个答案:

答案 0 :(得分:0)

尝试设置AFHTTPRequestOperation:acceptableContentTypes:

+ (NSSet *)acceptableContentTypes {
    return [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", nil];
}

答案 1 :(得分:0)

我遇到了同样的问题,我怀疑它可能与AFJSONRequestOperation处理响应的方式有关。

我使用AFJSONRequestOperation使用从[AFHTTPClient clientRequestWithMethod]返回的NSMutableURLRequest并构建我自己的NSMutableURLRequest来调度完全相同的请求,并且每个都有一个具有不同mime类型的响应 - 来自[AFHTTPClient clientRequestWithMethod]的一个指示text / plain; “手工”构建的NSMutableURLRequest中的一个是text / json。

我在这个问题中已经提到过这个问题:

AFNetworking with AFHTTPClient with AFJSONRequestOperation // MIME-Type Issues