博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POST JSON (字典 自定义类转为JSON上传)
阅读量:5290 次
发布时间:2019-06-14

本文共 1576 字,大约阅读时间需要 5 分钟。

/// POST JSON 的主方法 主要设置  Content-Type 为  application/json 剩下就是将 类转为JSON 格式二进制数

- (void)postJSON:(NSData *)data {

    // 1. url

    NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/postjson.php"];

    

    // 2. request

    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];

    

    // 2.1 httpMethod

    request.HTTPMethod = @"POST";

    // 2.2 设置 content-type,有些服务器在接收数据的时候,会做数据类型的校验

    [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];

    // 2.3 设置数据

    request.HTTPBody = data;

    

    // 3. connection

    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

        

        NSLog(@"%@", [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);

    }];

}

 

/// POST 字典 组成的数组 或单独的字典

- (void)postDict {

    NSDictionary *dict1 = @{@"productId": @123, @"productName": @"Mac pro"};

    NSDictionary *dict2 = @{@"productId": @001, @"productName": @"iPhone 7"};

    

    NSArray *array = @[dict1, dict2];

    

    // 序列化,将数据发送给服务器之前,将字典/数组 -> 二进制数据

    // 数据解析 - 反序列化,将服务器返回的二进制数据转换成字典或者模型

    NSData *data = [NSJSONSerialization dataWithJSONObject:array options:0 error:NULL];

    

    [self postJSON:data];

}

 

// KVC   将类的属性转为字典,再将字典序列化

- (void)postPerson {

  // 参数:传入对象数组转换成字典

    id obj = [self.person dictionaryWithValuesForKeys:@[@"name", @"age", @"title", @"height"]];

    

    // 顶级节点,是数组或者字典

    if (![NSJSONSerialization isValidJSONObject:obj]) {

        NSLog(@"数据格式无效");

        return;

    }

    NSData *data = [NSJSONSerialization dataWithJSONObject:obj options:0 error:NULL];

    

    [self postJSON:data];

}

转载于:https://www.cnblogs.com/weijingyun/p/4565025.html

你可能感兴趣的文章
CNN的理解
查看>>
数据手册中Accuracy和Precision的准确定义
查看>>
2.5 定义FTP工具的各种方法
查看>>
linux命令
查看>>
PHP中XPATH 实现xml及html文件快速解析(附xml做小型数据库实现六级单词快速查询实例)...
查看>>
2017-2018-2 20155309 南皓芯 Exp9 Web安全基础
查看>>
Leetcode Reverse Words in a String
查看>>
一文读懂内网、公网和NAT
查看>>
NotMapped属性特性
查看>>
go 语言 基础 类型(1)
查看>>
idea的初次使用
查看>>
正则表达式
查看>>
golang数据结构之定时器篇
查看>>
IBM内存三技术:Chipkill、MPX、MM
查看>>
css3伪类元素
查看>>
php部分,一个用递归无限分类的方法
查看>>
android,eclipse
查看>>
SpringBoot 上下文获取注入的Bean
查看>>
归并排序的进一步理解
查看>>
C - Wooden Sticks
查看>>