ios 使用 AFNetworking 2.0 发布 JSON 数据

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/21487184/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-30 23:19:37  来源:igfitidea点击:

Posting JSON data using AFNetworking 2.0

iosjsonhttp-postafnetworking-2

提问by vishal dharankar

I have a web script which accepts JSON string as input through HTTP POST request. I have came across several AFNetworking 1.x example for the same , can anybody please point me or give AFNetworking 2.0 example to do an HTTP POST request to a web script with formatted JSON as input ?

我有一个 Web 脚本,它通过 HTTP POST 请求接受 JSON 字符串作为输入。我遇到了几个相同的 AFNetworking 1.x 示例,任何人都可以指点我或给 AFNetworking 2.0 示例,以使用格式化的 JSON 作为输入对 Web 脚本执行 HTTP POST 请求吗?

Thanks

谢谢

回答by vishal dharankar

after searching docs and trying out some codes I got following as an example

在搜索文档并尝试了一些代码后,我以以下为例

 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);
 }];

Also don't forget to set response header type in the server script as Application/json.

另外不要忘记在服务器脚本中将响应头类型设置为 Application/json。

回答by lukszar

Here is some simple template for POST parameters stored in NSMutableDictionaryparameters in JSON format. Works with AFNetworking 2.4.1.

下面是一些简单的 POST 参数模板,NSMutableDictionary以 JSON 格式存储在参数中。适用于 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]);
}];

回答by generalzyq

If you want to post json to server, you should post your parameters use this way below.

如果要将 json 发布到服务器,则应在下面使用这种方式发布参数。

Use this way , you can then find out the "Content-Type" in your request header is "application/json".

使用这种方式,然后您可以找到请求标头中的“Content-Type”是“application/json”。

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);

}];

May this help. :)

愿这有帮助。:)

回答by Tamojit Pal

In swift:

迅速:

Add this in manager.AFHTTPRequestOperationManager

添加这个 manager.AFHTTPRequestOperationManager

manager.requestSerializer = AFJSONRequestSerializer(writingOptions: NSJSONWritingOptions.PrettyPrinted)

回答by Syed Abdul Basit

if you want to post parameter dictionary json string use following code

如果要发布参数字典 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];