我怎样才能在AFNetworking 3.0迁移?

我正在迁移AFNetworking 3.0。 我在AFNetworking中使用AFHTTPRequestOperation,但在最近的更新中删除了它。 我尝试了所有可能的解决scheme。 基本上我需要发布一个JSON头。 我将我的NSDIctionary转换成JSON对象,然后将其添加为string。 这里是我的Header的示例JSON

RequestHeader={ "lname" : "sadhsdf", "bday" : "2003-03-13", "age" : "12", "address" : "dsfhskdjgds", "gender" : "M", "cnumber" : "12312412", "fname" : "sadhsdf", "RequestType" : "userregistration", "Email" : "sldjlkasd@sjdhflksdf.com", "status" : "dsfhskdjgds", "Password" : "123456" } 

RequestHeader是一个NSString,其余的都是NSDictionary。

我如何将它应用于AFNetworking 3.0? 先谢谢你。

 NSURL *URL = [NSURL URLWithString:@"http://example.com/api"]; NSURLSessionConfiguration *configuration = [NSURLSessionConfiguration defaultSessionConfiguration]; AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:URL sessionConfiguration:configuration]; manager.responseSerializer = [AFJSONResponseSerializer serializer]; NSMutableDictionary *params = [[NSMutableDictionary alloc]init]; [params setValue:@"some value" forKey:@"someKey"]; [manager POST:@"search" parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) { //If you need to send image UIImage *image = [UIImage imageNamed:@"my_image.jpg"]; [formData appendPartWithFileData:UIImageJPEGRepresentation(image, 0.5) name:@"Image" fileName:@"my_image.jpg" mimeType:@"image/jpeg"]; } success:^(NSURLSessionDataTask *task, id responseObject) { } failure:^(NSURLSessionDataTask *task, NSError *error) { }]; 

你可以在这里查看官方的移民指南

使用常见的NSObject类调用与AFNetworking 3.0的 WS这是我的重复的答案,但它已更新与AFNetworking 3.0首先使任何名称的NSObject类在这里我创buildNSObject类与名称Webservice.hWebservice.m

Webservice.h

 @interface Webservice : NSObject + (void)requestPostUrl:(NSString *)strURL parameters:(NSDictionary *)dictParams success:(void (^)(NSDictionary *responce))success failure:(void (^)(NSError *error))failure; @end 

Webservice.m你的nsobject.m文件看起来像这样( 在.m文件中添加两个函数

 #import "Webservice.h" #define kDefaultErrorCode 12345 @implementation Webservice + (void)requestPostUrl:(NSString *)strURL parameters:(NSDictionary *)dictParams success:(void (^)(NSDictionary *responce))success failure:(void (^)(NSError *error))failure { AFHTTPSessionManager *manager = [AFHTTPSessionManager manager]; [manager setResponseSerializer:[AFHTTPResponseSerializer serializer]]; [manager POST:strURL parameters:dictParams progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id _Nullable responseObject) { if([responseObject isKindOfClass:[NSDictionary class]]) { if(success) { success(responseObject); } } else { NSDictionary *response = [NSJSONSerialization JSONObjectWithData:responseObject options:NSJSONReadingAllowFragments error:nil]; if(success) { success(response); } } } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) { if(failure) { failure(error); } }]; } @end 

确保您必须将成功的字典密钥replace为处理响应callback函数的消息

使用像这样从任何viewControllers和任何viewControllers任何方法调用这个常用的方法。 暂时我使用viewDidLoad调用这个WS。

  - (void)viewDidLoad { [super viewDidLoad]; NSDictionary *dictParam = @{@"parameter1":@"value1",@"parameter1":@"value2"}; [Webservice requestPostUrl:@"add your webservice URL here" parameters:dictParam success:^(NSDictionary *responce) { //Success NSLog(@"responce:%@",responce); //do code here } failure:^(NSError *error) { //error }]; } 

在上面的方法中添加你的参数,值和web服务的URL。 你可以很容易地使用这个NSObjcet类。 欲了解更多详情,请访问AFNetworking 3.0或我的旧AFANSworking 2.0 answear 。

 NSURL *url = [NSURL URLWithString:@"https://example.com/"]; AFHTTPClient *httpClient = [[AFHTTPClient alloc] initWithBaseURL:url]; NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys: height, @"user[height]", weight, @"user[weight]", nil]; [httpClient postPath:@"/myobject" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) { NSString *responseStr = [[NSString alloc] initWithData:responseObject encoding:NSUTF8StringEncoding]; NSLog(@"Request Successful, response '%@'", responseStr); } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"[HTTPClient Error]: %@", error.localizedDescription); }];