【发布时间】:2017-07-25 02:31:39
【问题描述】:
我正在开发一个使用 AFNetworking 连接 API 接口的项目。我的问题是如何向后端发送包含电子邮件、deviceId 的正文内容的请求。我发现了许多与 AFNetworking 2.0 而不是 3.0 兼容的解决方案。
现在我在使用 SessionManager,当我初始化请求时,如何添加内容正文上下文?
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters options:NSJSONWritingPrettyPrinted error:nil];
NSString *stringData = [[NSString alloc]initWithData:jsonData encoding:NSASCIIStringEncoding];
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
[manager.requestSerializer setValue:@"application/x-www-form-urlencoded; charset=UTF-8" forHTTPHeaderField:@"Content-Type"];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"application/json", @"text/json", @"text/javascript", @"text/html", nil];
[manager POST:_urlString parameters:nil progress:nil success:^(NSURLSessionTask *task, id responseObject) {
NSString *link = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding];
NSLog(@"JSON: %@",link);
} failure:^(NSURLSessionTask *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
我尝试将 email& deviceId 放入 [manager POST parameter: Dict],但它不起作用。
谁能告诉我如何将正文添加到 AFNetworking 3.0?谢谢
【问题讨论】:
-
你最好创建自己的单例而不是使用 AFNetworking 的管理器。我发现它的管理器在发送请求时会覆盖你的标头,并且管理器会导致内存泄漏。您可以实施您的经理。
-
@S.Jin 你能举个例子吗?我是 ios& 目标 c 的新手,我无法理解
-
@JaniceZhan 你可以继承
AFHTTPSessionManager并创建一个单例。像这样:+ (instancetype)sharedManager { static MyManager *manager = nil; static dispatch_once_t pred; dispatch_once(&pred, ^{ manager = [[self alloc] initWithBaseURL:[NSURL URLWithString:@"http://baseURL.org/"]]; }); return manager; }。您也可以在发送请求时或在 init 方法中设置您的标头字段。
标签: ios objective-c afnetworking afnetworking-3