如何使用 AFNetworking 在 Http 请求中发送 json 数据

Posted

技术标签:

【中文标题】如何使用 AFNetworking 在 Http 请求中发送 json 数据【英文标题】:How to send json data in the Http request using AFNetworking 【发布时间】:2016-02-06 06:24:35 【问题描述】:

我必须将json格式的数据传递给服务器

"email":"abc@gmail.com","password":"abc"

我已经使用了这段代码,但是数据没有传递到服务器请帮助我..

    NSDictionary *dict1=@@"email": @"biren123@gmail.com";
    NSDictionary *dict2=@@"password": @"biren";
    services *srv=[[services alloc]init];

    NSString *str=@"http://emailsending.in/setting_saver_api/";
    NSString *method=@"login.php";
    NSMutableDictionary *dict=[[NSMutableDictionary alloc]init];

    [dict setValue:dict1 forKey:@"email"];

    [dict setValue:dict2 forKey:@"password"];


    [srv postToURL:str withMethod:method andParams:dict completion:^(BOOL success, NSDictionary *responseObj)

     
         NSLog(@"res :%@",responseObj);
         NSLog(@"%d",success);

         NSLog(@"Successfully..................");


     ];

【问题讨论】:

【参考方案1】:

您可以在以下位置查看您的链接 https://www.hurl.it/

1) 提供您的 http 链接

2) 选择您的方法类型“获取”或“发布”

3)添加参数

并检查响应。如果您得到相同的响应,请联系您的后端团队。

【讨论】:

如何在hurl中发送json参数? 名称/值属性对的 JSON 对象。属性名称用于参数名称。属性值应该是一个值数组。如果您需要指定多个具有相同名称但值不同的参数,请指定一次名称并将值传递到数组中。仅在指定的方法为 POST、PUT、PATCH 或 DELETE 时使用。例如,"name":["John"] 或 "name":["John", "Frank"]。试试看 我在我的问题中给你链接、方法和参数,所以给我完整的链接,这样我就可以测试你测试并给我回复,因为我不明白如何在 hurl 中传递参数 "status":"0","msg":"Data is required",此回复即将发布。联系您的后端团队 好的,谢谢我在我的代码中得到相同的响应,所以我的代码方面有错误?【参考方案2】:

试试这个。 1)使用 NSJSONSerialization 将您的字典转换为 json 并将其存储在 NSdata 中。

NSData * eventData = [NSJSONSerialization dataWithJSONObject: params options:0 error:&err];

2) 将包含 json 的 NSdata 发布到您的服务器

【讨论】:

嗨,您可以编辑我上面的代码,以便我更好地理解【参考方案3】:

试试这个,如果有帮助的话

  NSString *str = @"http://emailsending.in/setting_saver_api/"; 

NSString*method = @"login.php";

    services *srv=[[services alloc]init];

    NSMutableDictionary *dict1 = [NSMutableDictionary dictionary]; [dict1 setValue:@"biren123@gmail.com" forKey:@"email"];

    NSMutableDictionary *dict2 = [NSMutableDictionary dictionary]; [dict2 setValue:@"biren" forKey:@"password"];


    NSMutableDictionary *dict=[[NSMutableDictionary alloc]init];

        [dict setValue:dict1 forKey:@"email"];

        [dict setValue:dict2 forKey:@"password"];

    AFHTTPSessionManager *manager = [[AFHTTPSessionManager alloc] initWithBaseURL:baseURL]; manager.requestSerializer = [AFJSONRequestSerializer serializer]; manager.responseSerializer = [AFJSONResponseSerializer serializer];

    [manager POST:str parameters:dict 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]); ];

【讨论】:

以上是关于如何使用 AFNetworking 在 Http 请求中发送 json 数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AFNetworking 在 http 中将 json 数据作为参数传递

如何使用 AFNetworking 在 Http 请求中发送 json 数据

如何使用 AFNetworking 2 设置 HTTP 请求?

在 AFNetworking 3.0 中使用自定义 HTTP 标头

如何删除 AFNetworking 中的 http 标头选项?

AFNetworking 2.0 HTTP POST 进展