ios - AFNetworking 发布请求

我是 obj-c 的新手,在我的一些项目中一直使用 asihttp。在 asihttp 中执行发布请求时,它会以这种方式完成。

    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];
    [request setPostValue:height forKey:@"user[height]"];
    [request setPostValue:weight forKey:@"user[weight]"];
    [request setDelegate:self];
    [request startAsynchronous];

AFNetworking 将如何通过代码示例进行此操作?
我已经让 get Json getrequest 在 AFNetworking 中工作,但是这个帖子请求给我带来了一些问题。提前感谢您的帮助。

最佳答案

首先值得补充的是(因为这个答案在我最初写它 6 年后仍然很流行......)你应该考虑的第一件事是你是否应该使用 AFNetworking。 NSURLSession 是在 iOS 7 中添加的,这意味着您在许多情况下不需要使用 AFNetworking - 并且少一个第三方库总是一件好事。

对于 AFNetworking 3.0:

AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
NSDictionary *params = @{@"user[height]": height,
                         @"user[weight]": weight};
[manager POST:@"https://example.com/myobject" parameters:params progress:nil success:^(NSURLSessionTask *task, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(NSURLSessionTask *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

对于 AFNetworking 2.0(也使用新的 NSDictionary 语法):

AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
NSDictionary *params = @{@"user[height]": height,
                         @"user[weight]": weight};
[manager POST:@"https://example.com/myobject" parameters:params success:^(AFHTTPRequestOperation *operation, id responseObject) {
    NSLog(@"JSON: %@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
    NSLog(@"Error: %@", error);
}];

如果您在使用 AFNetworking 1.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);
}];

https://stackoverflow.com/questions/7623275/

相关文章:

objective-c - 值/对象的 NSDictionary 键?

objective-c - Xcode 不断要求输入密码以使用系统钥匙串(keychain)

ios - UITableView 中的圆形 UIImageView 没有性能影响?

objective-c - sizeWithFont 方法已弃用。 boundingRectWith

objective-c - 基于 View 的 NSTableView 具有动态高度的行

objective-c - NSString 到 CFStringRef 和 CFStringRef

objective-c - 在 Objective-C 中将所有文本转换为小写

ios - 在 SKScene 中设置按钮

objective-c - 如何在 Swift 项目中使用 Objective-C CocoaPod

objective-c - 如何使用 AFNetworking 设置超时