iOS通过ASIHTTPRequest提交JSON数据

简介: 先验知识——什么是ASIHTTPRequest?   使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中。

先验知识——什么是ASIHTTPRequest?

 

使用iOS SDK中的HTTP网络请求API,相当的复杂,调用很繁琐,ASIHTTPRequest就是一个对CFNetwork API进行了封装,并且使用起来非常简单的一套API,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中。ASIHTTPRequest适用于基本的HTTP请求,和基于REST的服务之间的交互。

 

如何使用ASIHTTPRequest?

 

网上有很多专门介绍ASIHTTPRequest使用的文章,很详细,楼主就不赘述了哈,在此给出一篇经典的介绍详细的文章链接:http://www.cnblogs.com/dotey/archive/2011/05/10/2041966.html

 

上传JSON格式数据

 

首先给出主功能代码段,然后对代码进行详细解析:

 

[cpp]  view plain copy
 
  1. NSDictionary *user = [[NSDictionary alloc] initWithObjectsAndKeys:@"0", @"Version", nil];  
  2.                 if ([NSJSONSerialization isValidJSONObject:user])  
  3.                 {  
  4.                     NSError *error;  
  5.                     NSData *jsonData = [NSJSONSerialization dataWithJSONObject:user options:NSJSONWritingPrettyPrinted error: &error];  
  6.                     NSMutableData *tempJsonData = [NSMutableData dataWithData:jsonData];  
  7.                     //NSLog(@"Register JSON:%@",[[NSString alloc] initWithData:tempJsonData encoding:NSUTF8StringEncoding]);  
  8.                       
  9.                     NSURL *url = [NSURL URLWithString:@"http://42.96.140.61/lev_version.php"];  
  10.                     ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];  
  11.                     [request addRequestHeader:@"Content-Type" value:@"application/json; encoding=utf-8"];  
  12.                     [request addRequestHeader:@"Accept" value:@"application/json"];  
  13.                     [request setRequestMethod:@"POST"];  
  14.                     [request setPostBody:tempJsonData];  
  15.                     [request startSynchronous];  
  16.                     NSError *error1 = [request error];  
  17.                     if (!error1) {  
  18.                         NSString *response = [request responseString];  
  19.                         NSLog(@"Test:%@",response);  
  20.                     }  
  21.                 }  

 

 

 

 

 

代码段第一行:

[cpp]  view plain copy
 
  1. NSDictionary *user = [[NSDictionary alloc] initWithObjectsAndKeys:@"0", @"Version", nil];  

 

构造了一个最简单的字典类型的数据,因为自iOS 5后提供把NSDictionary转换成JSON格式的API。

第二行if判断该字典数据是否可以被JSON化。

 

[cpp]  view plain copy
 
  1. NSData *jsonData = [NSJSONSerialization dataWithJSONObject:user options:NSJSONWritingPrettyPrinted error: &error];  

这一句就是把NSDictionary转换成JSON格式的方法,JSON格式的数据存储在NSData类型的变量中。

 

 

[cpp]  view plain copy
 
  1. NSMutableData *tempJsonData = [NSMutableData dataWithData:jsonData];  

 

这一句是把NSData转换成NSMutableData,原因是下面我们要利用ASIHTTPRequest发送JSON数据时,其消息体一定要以NSMutableData的格式存储。

下面一句注视掉的语句

[cpp]  view plain copy
 
  1. //NSLog(@"Register JSON:%@",[[NSString alloc] initWithData:tempJsonData encoding:NSUTF8StringEncoding]);  

 

主要作用是记录刚才JSON格式化的数据

下面到了ASIHTTPRequest功能部分:

 

[cpp]  view plain copy
 
  1. NSURL *url = [NSURL URLWithString:@"http://xxxx"];  
  2.                     ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];  

这两句的主要功能是设置要与客户端交互的服务器端地址。

 

接下来两句:

[cpp]  view plain copy
 
  1. [request addRequestHeader:@"Content-Type" value:@"application/json; encoding=utf-8"];  
  2.                     [request addRequestHeader:@"Accept" value:@"application/json"];  

是设置HTTP请求信息的头部信息,从中可以看到内容类型是JSON。

 

接下来是设置请求方式(默认为GET)和消息体:

 

[cpp]  view plain copy
 
  1. [request setRequestMethod:@"POST"];  
  2.                     [request setPostBody:tempJsonData];  

一切设置完毕后开启同步请求:

 

 

[cpp]  view plain copy
 
  1. [request startSynchronous];  


最后的一段:

 

 

[cpp]  view plain copy
 
  1. if (!error1) {  
  2.                         NSString *response = [request responseString];  
  3.                         NSLog(@"Rev:%@",response);  
  4.                     }  

是打印服务器返回的响应信息。

如何联系我:【万里虎】www.bravetiger.cn 【QQ】3396726884 (咨询问题100元起,帮助解决问题500元起) 【博客】http://www.cnblogs.com/kenshinobiy/
目录
相关文章
|
11天前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
27 1
|
2月前
|
JSON 前端开发 JavaScript
|
8天前
|
存储 JSON Go
在Gin框架中优雅地处理HTTP请求体中的JSON数据
在Gin框架中优雅地处理HTTP请求体中的JSON数据
|
12天前
|
JSON JavaScript 数据格式
vue写入json数据到文本中+vue引入cdn的用法
vue写入json数据到文本中+vue引入cdn的用法
|
9天前
|
JSON 数据格式
Blob格式转json格式,拿到后端返回的json数据
文章介绍了如何将后端返回的Blob格式数据转换为JSON格式,并处理文件下载和错误提示。
21 0
Blob格式转json格式,拿到后端返回的json数据
|
2月前
|
存储 JSON API
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
——在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦! 淘宝API接口(如淘宝开放平台提供的API)允许开发者获取淘宝商品的各种信息,包括商品详情。然而,需要注意的是,直接访问淘宝的商品数据API通常需要商家身份或开发者权限,并且需要遵循淘宝的API使用协议。
淘系API接口(解析返回的json数据)商品详情数据解析助力开发者
|
24天前
|
JSON JavaScript 前端开发
Haskell中的数据交换:通过http-conduit发送JSON请求
Haskell中的数据交换:通过http-conduit发送JSON请求
|
2月前
|
存储 SQL JSON
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
【Azure Logic App】微软云逻辑应用连接到数据库,执行存储过程并转换执行结果为JSON数据
|
2月前
|
JSON 前端开发 API
【淘系】商品详情属性解析(属性规格详情图sku等json数据示例返回参考),淘系API接口系列
在淘宝(或天猫)平台上,商品详情属性(如属性规格、详情图、SKU等)是商家在发布商品时设置的,用于描述商品的详细信息和不同规格选项。这些信息对于消费者了解商品特性、进行购买决策至关重要。然而,直接通过前端页面获取这些信息的结构化数据(如JSON格式)并非直接暴露给普通用户或开发者,因为这涉及到平台的商业机密和数据安全。 不过,淘宝平台提供了丰富的API接口(如淘宝开放平台API),允许有资质的开发者或合作伙伴通过编程方式获取商品信息。这些API接口通常需要注册开发者账号、申请应用密钥(App Key)和秘钥(App Secret),并遵守淘宝的API使用协议。
|
2月前
|
JSON Java Android开发
Android 开发者必备秘籍:轻松攻克 JSON 格式数据解析难题,让你的应用更出色!
【8月更文挑战第18天】在Android开发中,解析JSON数据至关重要。JSON以其简洁和易读成为首选的数据交换格式。开发者可通过多种途径解析JSON,如使用内置的`JSONObject`和`JSONArray`类直接操作数据,或借助Google提供的Gson库将JSON自动映射为Java对象。无论哪种方法,正确解析JSON都是实现高效应用的关键,能帮助开发者处理网络请求返回的数据,并将其展示给用户,从而提升应用的功能性和用户体验。
50 1
下一篇
无影云桌面