zoukankan      html  css  js  c++  java
  • POST 上传 JSON 数据

      

    //
    //  ViewController.m
    //  03-post上传json
    //
    //  Created by jerry on 15/10/10.
    //  Copyright (c) 2015年 jerry. All rights reserved.
    //
    
    #import "ViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
        // 1. url
        NSURL *url = [NSURL URLWithString:@"http://127.0.0.1/post/postjson.php"];
        
        // 2. post Request
        NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:1 timeoutInterval:2.0f];
        // 2.1 set HTTPMethod
        request.HTTPMethod = @"POST";
        
        // 2.2 UpLoad JSON Type Data
        // 序列化,将NSArray/NSDictionary转换成特殊数据类型的二进制数据。
        // 反序列化 将服务器返回的二进制数据转成NSArray/NSDictionary
        NSDictionary *dict1 = @{@"name":@"xiaofeng",@"age":@"18"};
        NSDictionary *dict2 = @{@"name":@"xiaosan",@"age":@"21"};
        
        NSArray *array = @[dict1,dict2];
        /**
         - Top level object is an NSArray or NSDictionary
         顶级节点是字典或者数组
         - All objects are NSString, NSNumber, NSArray, NSDictionary, or NSNull
         所有的对象是 NSString, NSNumber, NSArray, NSDictionary, or NSNull
         - All dictionary keys are NSStrings
         所有字典的key 是 NSString
         - NSNumbers are not NaN or infinity
         NSNumbers必须指定,不能是无穷大
         
         + (BOOL)isValidJSONObject:(id)obj;
         用来检验给定的对象是否能够被序列化
         */
        //    NSString *str = @"{"username":"xiangfeng","age":"18"}";
        if (![NSJSONSerialization isValidJSONObject:array]) {
            NSLog(@"格式不正确,不能被序列化!");
            return ;
        }
        request.HTTPBody = [NSJSONSerialization dataWithJSONObject:array options:0 error:NULL];
        
        // connection
        [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
            // 反序列化的一个处理
            id result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
            NSLog(@"%@",result);
        }];
    
        
        
    }
    
    - (void)didReceiveMemoryWarning {
        [super didReceiveMemoryWarning];
        // Dispose of any resources that can be recreated.
    }
    
    @end
  • 相关阅读:
    TransportClient基于Elasticsearch6.8.6 X-PACK
    elasticsearch6.8.6配置xpack(生成密钥)
    Java8 List排序
    ssh 免密码登录自动设置脚本
    Linux grep命令用于查找文件里符合条件的字符串
    [译]如何防止elasticsearch的脑裂问题
    APScheduler定时任务使用
    storm本地python开发环境搭建
    关于python反射的getattr,我终于想通了!
    利用sqlalchemy 查询视图
  • 原文地址:https://www.cnblogs.com/pengpengzhang/p/4865751.html
Copyright © 2011-2022 走看看