如何在 AFNetworking 3.0 中迁移?
How can I migrate in AFNetworking 3.0?
我正在 AFNetworking 3.0 中迁移。我在 AFNetworking 中使用 AFHTTPRequestOperation,但它在最近的更新中被删除了。我尝试了所有可能的解决方案。基本上我需要 post 一个 JSON 和 Header。我将我的 NSDIctionary 转换为 JSON object 然后将其添加为字符串。这是样本 JSON 和我的 Header
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:@"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);
}];
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) {
}];
可以查看官方迁移指南here
使用通用 NSObject
Class 调用 WS 与 AFNetworking 3.0
这是我的重复答案,但已 更新为 AFNetworking 3.0
首先使 NSObject
Class 使用任何名称,我正在创建 NSObject
Class 使用名称 Webservice.h 和 Webservice.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
make sure you have to replace your dictionary key with success and
message for handling of responce callback function
像这样使用 从任何 viewcontroller.m 和任何 viewControllers
调用此通用方法。暂时我使用 viewDidLoad
调用 This 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
}];
}
在上述方法中添加您的参数、值和网络服务URL。你可以很容易地使用这个 NSObjcet
Class。欲了解更多详情,请访问 AFNetworking 3.0 or my old answear with AFNetworking 2.0.
我正在 AFNetworking 3.0 中迁移。我在 AFNetworking 中使用 AFHTTPRequestOperation,但它在最近的更新中被删除了。我尝试了所有可能的解决方案。基本上我需要 post 一个 JSON 和 Header。我将我的 NSDIctionary 转换为 JSON object 然后将其添加为字符串。这是样本 JSON 和我的 Header
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:@"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);
}];
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) {
}];
可以查看官方迁移指南here
使用通用 NSObject
Class 调用 WS 与 AFNetworking 3.0
这是我的重复答案,但已 更新为 AFNetworking 3.0
首先使 NSObject
Class 使用任何名称,我正在创建 NSObject
Class 使用名称 Webservice.h 和 Webservice.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
make sure you have to replace your dictionary key with success and message for handling of responce callback function
像这样使用 从任何 viewcontroller.m 和任何 viewControllers
调用此通用方法。暂时我使用 viewDidLoad
调用 This 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
}];
}
在上述方法中添加您的参数、值和网络服务URL。你可以很容易地使用这个 NSObjcet
Class。欲了解更多详情,请访问 AFNetworking 3.0 or my old answear with AFNetworking 2.0.