AFNetworking iOS - GET 请求完成后在 NSLog 中查看实际数据的方法

问题描述 投票:0回答:1

我对下面名为

queryJobAndMoveWithName
的 API 方法进行了简单调用,该方法发出 GET 请求(例如 http://www.imdb.com/xml/find?json=1&nr=1&nm=on&q=jennifer)。

但是,当我查看日志时,responseJSON 会呈现为:

<57652068 6f706520 746f206c 61756e63 68205353 4c206163 63657373 20746f20 616c6c20 70616765 73206f6e 20494d44 6220696e 20746865 20766572 79206e65 61722066 75747572 652e0d0a 0d0a5468 616e6b73 20666f72 20796f75 72207061 7469656e 63652e> {XXX:XXX, XXX:XXX} 之外

- (void)queryJobAndMoveWithName:(NSString *)name completionHandler:(void (^)(NSDictionary *resultsJSON, NSError *error))completionHandler {
    
    NSString *url = [NSString stringWithFormat:@"%@%@?json=1&nr=1&nm=on&q=%@", kAPIHost, kSearchPath, name];
    
    AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
    manager.requestSerializer = [AFHTTPRequestSerializer serializer];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/javascript" ,@"text/html", @"text/plain", @"text/json", nil];
    
    [manager GET:url parameters:nil success:^(AFHTTPRequestOperation *operation, id responseJSON) {
        NSLog(@"JSON: %@", responseJSON);
        completionHandler(responseJSON, nil);
    } failure:^(AFHTTPRequestOperation *operation, NSError *error) {
        NSLog(@"Error: %@", error);
        completionHandler(nil, error);
    }];
}

这是一个从视图控制器调用API方法的方法

- (IBAction)searchButtonTapped:(id)sender {
    NSLog(@"%@",self.searchTextField.text);
    NSString *queryName = self.searchTextField.text;
    NSArray *fullName = [queryName componentsSeparatedByString:@" "];
    NSString *formattedFullName = [fullName componentsJoinedByString:@"+"];
    
    FPAImdbApi *imdbApi = [[FPAImdbApi alloc] init];
    [imdbApi queryJobAndMoveWithName:formattedFullName completionHandler:^(NSDictionary *resultsJSON, NSError *error) {
        if (error) {
            NSLog(@"error: %@", error);
        } else if (resultsJSON) {
            NSLog(@"result json: \n %@", resultsJSON);
        } else {
            NSLog(@"nothing found");
        }

    }];
    
}

所以我的问题是如何在日志中查看生成的 JSON 内容而不是内存形式?

ios json objective-c ajax afnetworking
1个回答
0
投票

您还没有告诉经理响应是JSON格式的,这里您将响应序列化器设置为HTTP:

manager.responseSerializer = [AFHTTPResponseSerializer serializer];

将其更改为 JSON:

manager.responseSerializer = [AFJSONResponseSerializer serializer];

在错误块中,您可以执行类似的操作来打印服务器的响应:

if (error) {
    NSHTTPURLResponse *respone = error.userInfo[AFNetworkingOperationFailingURLResponseErrorKey];
    NSData *errorData = error.userInfo[AFNetworkingOperationFailingURLResponseDataErrorKey];
    NSString *responseString = [[NSString alloc] initWithData:errorData encoding:NSUTF8StringEncoding];
    NSLog(@"Response: %@", responseString);
}
© www.soinside.com 2019 - 2024. All rights reserved.