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/
目录
相关文章
|
24天前
|
JSON API 数据格式
淘宝/天猫图片搜索API接口,json返回数据。
淘宝/天猫平台虽未开放直接的图片搜索API,但可通过阿里妈妈淘宝联盟或天猫开放平台接口实现类似功能。本文提供基于淘宝联盟的图片关联商品搜索Curl示例及JSON响应说明,适用于已获权限的开发者。如需更高精度搜索,可选用阿里云视觉智能API。
|
22天前
|
JSON API 数据安全/隐私保护
深度分析淘宝卖家订单详情API接口,用json返回数据
淘宝卖家订单详情API(taobao.trade.fullinfo.get)是淘宝开放平台提供的重要接口,用于获取单个订单的完整信息,包括订单状态、买家信息、商品明细、支付与物流信息等,支撑订单管理、ERP对接及售后处理。需通过appkey、appsecret和session认证,并遵守调用频率与数据权限限制。本文详解其使用方法并附Python调用示例。
|
1月前
|
JSON 缓存 API
淘宝店铺所有商品API,json数据返回
淘宝店铺所有商品API的JSON数据返回通常包含商品的基本信息、动态数据以及分页信息等。以下是一个详细的JSON数据返回示例,以及相关字段的说明
|
1月前
|
JSON 算法 API
淘宝商品评论API接口核心解析,json数据返回
淘宝商品评论API是淘宝开放平台提供的数据服务接口,允许开发者通过编程方式获取指定商品的用户评价数据,包括文字、图片、视频评论及评分等。其核心价值在于:
|
2月前
|
JSON API 数据格式
Python采集京东商品评论API接口示例,json数据返回
下面是一个使用Python采集京东商品评论的完整示例,包括API请求、JSON数据解析
|
2月前
|
JSON API 数据格式
淘宝拍立淘按图搜索API,json数据返回
以下是淘宝拍立淘按图搜索API接口返回的JSON数据示例及关键字段解析
|
3月前
|
JSON API 数据格式
淘宝商品评论API接口,json数据示例参考
淘宝开放平台提供了多种API接口来获取商品评论数据,其中taobao.item.reviews.get是一个常用的接口,用于获取指定商品的评论信息。以下是关于该接口的详细介绍和使用方法:
|
1月前
|
设计模式 JSON Unix
微店商品详情API接口,json数据返回
微店商品详情API接口的典型JSON返回数据结构说明,基于公开的微店开放平台API文档和常见电商API设计模式整理。实际使用时请以微店官方最新文档为准
|
4月前
|
SQL JSON 数据格式
SPL 处理多层 JSON 数据比 DuckDB 方便多了
esProc SPL 处理多层 JSON 数据比 DuckDB 更便捷,尤其在保留 JSON 层次与复杂计算时优势明显。DuckDB 虽能通过 `read_json_auto()` 将 JSON 解析为表格结构,但面对深层次或复杂运算时,SQL 需频繁使用 UNNEST、子查询等结构,逻辑易变得繁琐。而 SPL 以集合运算方式直接处理子表,代码更简洁直观,无需复杂关联或 Lambda 语法,同时保持 JSON 原始结构。esProc SPL 开源免费,适合复杂 JSON 场景,欢迎至乾学院探索!
|
24天前
|
JSON 安全 API
Python处理JSON数据的最佳实践:从基础到进阶的实用指南
JSON作为数据交换通用格式,广泛应用于Web开发与API交互。本文详解Python处理JSON的10个关键实践,涵盖序列化、复杂结构处理、性能优化与安全编程,助开发者高效应对各类JSON数据挑战。
109 1