我有一个 Web 脚本,可以通过 HTTP POST 请求接受 JSON 字符串作为输入。我看到了几个使用 AFNetworking 1.x 的示例,它们使用相同的方法。请问是否有人可以指导我或提供 AFNetworking 2.0 的示例,以便将格式化的 JSON 作为输入发送到 Web 脚本中?
谢谢。
我有一个 Web 脚本,可以通过 HTTP POST 请求接受 JSON 字符串作为输入。我看到了几个使用 AFNetworking 1.x 的示例,它们使用相同的方法。请问是否有人可以指导我或提供 AFNetworking 2.0 的示例,以便将格式化的 JSON 作为输入发送到 Web 脚本中?
谢谢。
在查阅文档并尝试一些代码之后,我得到了以下示例:
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
NSDictionary *params = @ {@"user" :txtUserName, @"pwd" :txtPwd };
[manager POST:URL_SIGNIN parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject)
{
NSLog(@"JSON: %@", responseObject);
}
failure:
^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@", error);
}];
同时不要忘记在服务器脚本中设置响应头类型为Application/json。
这是一些简单的模板,用于将POST参数以JSON格式存储在NSMutableDictionary
参数中。适用于AFNetworking 2.4.1。
NSString *baseURL = @"http://your-server.com/";
NSString *path = @"method/url/";
NSMutableDictionary *parameters = [NSMutableDictionary dictionary];
[parameters setObject:@"value" forKey:@"key"];
AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[manager POST:path parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"JSON: %@", responseObject);
//here is place for code executed in success case
} failure:^(NSURLSessionDataTask *task, NSError *error) {
//here is place for code executed in error case
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error while sending POST"
message:@"Sorry, try again."
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alertView show];
NSLog(@"Error: %@", [error localizedDescription]);
}];
AFJSONRequestSerializer *serializer = [AFJSONRequestSerializer serializer];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
[serializer setValue:@"application/json" forHTTPHeaderField:@"Accept"];
manager.requestSerializer = serializer;
NSDictionary *paras = @{@"uid" : @(10020)};
[manager POST:@"http://your.request.url" parameters:paras success:^(AFHTTPRequestOperation *operation, id responseObject) {
}failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"the falire is %@", error);
}];
在Swift中:
在manager.AFHTTPRequestOperationManager
中添加以下内容:
manager.requestSerializer = AFJSONRequestSerializer(writingOptions: NSJSONWritingOptions.PrettyPrinted)
如果您想发布参数字典JSON字符串,请使用以下代码
NSMutableURLRequest * urlRequest = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"your_webservice_post_url"]];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[urlRequest setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
NSError *error;
NSDictionary *parameters = @{@"customValue":@"value"};
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:parameters options:NSJSONWritingPrettyPrinted error:&error];
[urlRequest setHTTPMethod:@"POST"];
[urlRequest setHTTPBody:jsonData];