AFNetworking - 使用序列化器
AFNetworking - Using Serializers
我正在尝试使用 Objective C 中的 AFNetworking
设置基本 API 请求。但是,我对 AFHTTPRequestSerializer
应该如何工作感到有点困惑。到目前为止,下面的代码似乎没有执行对我的 API 的请求,因为成功/错误 NSLog
语句中没有打印任何内容。我不认为我完全理解 AFHTTPRequestSerializer
是如何合并到 AFHTTPRequestOperationManager
:
NSString *URLString = @"http://mysite.dev/v1/user/5";
NSDictionary *parameters = @{@"include": @"places"};
manager = [[AFHTTPRequestOperationManager alloc]
initWithBaseURL:[NSURL URLWithString:URLString]];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
// Do I need to return this? Or does AFHTTPRequestOperationManager
// use this implicitly within its request?
NSMutableURLRequest *request = [manager.requestSerializer
requestWithMethod:@"GET"
URLString:URLString
parameters:parameters
error:nil
];
// My oAuth Header token
[manager.requestSerializer setValue:@"1234" forHTTPHeaderField:@"Authorization"];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager HTTPRequestOperationWithRequest: request
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError * error) {
NSLog(@"%@", error);
}];
因此据我了解,HTTPRequestOperationWithRequest
似乎用于创建异步请求。但是,它实际上并没有将它们添加到队列中,它只是创建了请求对象——这就是我没有收到任何输出的原因。
相反,我现在使用 [manager GET]
。
尝试使用以下对我有用的功能。我解决了Header Value
并使用了requestSerializer
- (void)getServerRequest:(NSString *)strRequestURL {
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:@"Header1Value" forHTTPHeaderField:@"Header1Key"];
[manager GET:@"URL String" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
}
我正在尝试使用 Objective C 中的 AFNetworking
设置基本 API 请求。但是,我对 AFHTTPRequestSerializer
应该如何工作感到有点困惑。到目前为止,下面的代码似乎没有执行对我的 API 的请求,因为成功/错误 NSLog
语句中没有打印任何内容。我不认为我完全理解 AFHTTPRequestSerializer
是如何合并到 AFHTTPRequestOperationManager
:
NSString *URLString = @"http://mysite.dev/v1/user/5";
NSDictionary *parameters = @{@"include": @"places"};
manager = [[AFHTTPRequestOperationManager alloc]
initWithBaseURL:[NSURL URLWithString:URLString]];
manager.requestSerializer = [AFHTTPRequestSerializer serializer];
// Do I need to return this? Or does AFHTTPRequestOperationManager
// use this implicitly within its request?
NSMutableURLRequest *request = [manager.requestSerializer
requestWithMethod:@"GET"
URLString:URLString
parameters:parameters
error:nil
];
// My oAuth Header token
[manager.requestSerializer setValue:@"1234" forHTTPHeaderField:@"Authorization"];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager HTTPRequestOperationWithRequest: request
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@", responseObject);
}
failure:^(AFHTTPRequestOperation *operation, NSError * error) {
NSLog(@"%@", error);
}];
因此据我了解,HTTPRequestOperationWithRequest
似乎用于创建异步请求。但是,它实际上并没有将它们添加到队列中,它只是创建了请求对象——这就是我没有收到任何输出的原因。
相反,我现在使用 [manager GET]
。
尝试使用以下对我有用的功能。我解决了Header Value
并使用了requestSerializer
- (void)getServerRequest:(NSString *)strRequestURL {
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager.requestSerializer setValue:@"Header1Value" forHTTPHeaderField:@"Header1Key"];
[manager GET:@"URL String" parameters:nil success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"success: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
}