如何使用 AFNetworking 在 Objective C 中使用操作键进行 POST
Posted
技术标签:
【中文标题】如何使用 AFNetworking 在 Objective C 中使用操作键进行 POST【英文标题】:How to do POST with action key in Objective C using AFNnetworking 【发布时间】:2014-10-25 22:25:51 【问题描述】:我正在尝试使用名为“#load”的操作参数进行 POST。
对我的网络服务来说,关键是需要显示结果:action:#load
如何使用 AFNetworking 框架做到这一点?这是我的错误代码示例:
首先是常量声明:
const NSString *BASE_URL = @"http://www.mywebservice.com/request.php";
现在是代码:
-(void)requisitarEventos
[smartEventos removeAllObjects];
NSString* url = [BASE_URL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[SVProgressHUD showWithStatus:@"Loading..." maskType:SVProgressHUDMaskTypeGradient];
NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:@"#load",@"action", nil];
[manager POST:url parameters:parameters
success:^(AFHTTPRequestOperation *operation, id responseObject)
[self carregarEventos:responseObject];
[SVProgressHUD dismiss];
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Error: %@", error);
[SVProgressHUD dismiss];
];
【问题讨论】:
【参考方案1】:我找到了答案。我的 Web 服务代码的真正问题不是在“application/json”中给出 Content-Type 的结果,而是在“text/html”中给出。
我使用下面的代码解决了这个问题:
NSMutableSet *contentTypes = [[NSMutableSet alloc] initWithSet:manager.responseSerializer.acceptableContentTypes];
[contentTypes addObject:@"text/html"];
manager.responseSerializer.acceptableContentTypes = contentTypes;
还有我班级的完整代码:
-(void)callEvents
[smartEvents removeAllObjects];
NSString* url = [NSString stringWithFormat:@"%@myService.php?action=load", BASE_URL];
url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
[SVProgressHUD showWithStatus:@"Loading..." maskType:SVProgressHUDMaskTypeGradient];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
NSMutableSet *contentTypes = [[NSMutableSet alloc] initWithSet:manager.responseSerializer.acceptableContentTypes];
[contentTypes addObject:@"text/html"];
manager.responseSerializer.acceptableContentTypes = contentTypes;
[manager GET:url parameters:nil
success:^(AFHTTPRequestOperation *operation, id responseObject)
[self carregarEventos:responseObject];
[SVProgressHUD dismiss];
failure:^(AFHTTPRequestOperation *operation, NSError *error)
NSLog(@"Error: %@", error);
[SVProgressHUD dismiss];
];
【讨论】:
【参考方案2】:请看这个,我用回调做了一个简单的post方法,
POST with URL parameters and JSON body in AFNetworking
【讨论】:
以上是关于如何使用 AFNetworking 在 Objective C 中使用操作键进行 POST的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AFNetworking 通过 Post 请求在服务器上发送 NSData?
如何使用 AFNetworking 为请求设置 HTTP 正文?
如何使用 AFNetworking 在 UILabel 中设置 UIProgressView 的下载状态?