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/
目录
相关文章
|
2月前
|
XML 存储 JSON
Twaver-HTML5基础学习(19)数据容器(2)_数据序列化_XML、Json
本文介绍了Twaver HTML5中的数据序列化,包括XML和JSON格式的序列化与反序列化方法。文章通过示例代码展示了如何将DataBox中的数据序列化为XML和JSON字符串,以及如何从这些字符串中反序列化数据,重建DataBox中的对象。此外,还提到了用户自定义属性的序列化注册方法。
47 1
|
1月前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
18天前
|
JSON 数据格式 索引
Python中序列化/反序列化JSON格式的数据
【11月更文挑战第4天】本文介绍了 Python 中使用 `json` 模块进行序列化和反序列化的操作。序列化是指将 Python 对象(如字典、列表)转换为 JSON 字符串,主要使用 `json.dumps` 方法。示例包括基本的字典和列表序列化,以及自定义类的序列化。反序列化则是将 JSON 字符串转换回 Python 对象,使用 `json.loads` 方法。文中还提供了具体的代码示例,展示了如何处理不同类型的 Python 对象。
|
22天前
|
JSON 缓存 前端开发
PHP如何高效地处理JSON数据:从编码到解码
在现代Web开发中,JSON已成为数据交换的标准格式。本文探讨了PHP如何高效处理JSON数据,包括编码和解码的过程。通过简化数据结构、使用优化选项、缓存机制及合理设置解码参数等方法,可以显著提升JSON处理的性能,确保系统快速稳定运行。
|
15天前
|
JSON API 数据安全/隐私保护
拍立淘按图搜索API接口返回数据的JSON格式示例
拍立淘按图搜索API接口允许用户通过上传图片来搜索相似的商品,该接口返回的通常是一个JSON格式的响应,其中包含了与上传图片相似的商品信息。以下是一个基于淘宝平台的拍立淘按图搜索API接口返回数据的JSON格式示例,同时提供对其关键字段的解释
|
1月前
|
JSON JavaScript Java
在Java中处理JSON数据:Jackson与Gson库比较
本文介绍了JSON数据交换格式及其在Java中的应用,重点探讨了两个强大的JSON处理库——Jackson和Gson。文章详细讲解了Jackson库的核心功能,包括数据绑定、流式API和树模型,并通过示例演示了如何使用Jackson进行JSON解析和生成。最后,作者分享了一些实用的代码片段和使用技巧,帮助读者更好地理解和应用这些工具。
在Java中处理JSON数据:Jackson与Gson库比较
|
1月前
|
JSON JavaScript API
(API接口系列)商品详情数据封装接口json数据格式分析
在成长的路上,我们都是同行者。这篇关于商品详情API接口的文章,希望能帮助到您。期待与您继续分享更多API接口的知识,请记得关注Anzexi58哦!
|
1月前
|
JSON 前端开发 Java
【Spring】“请求“ 之传递 JSON 数据
【Spring】“请求“ 之传递 JSON 数据
87 2
|
2月前
|
存储 JSON Go
在Gin框架中优雅地处理HTTP请求体中的JSON数据
在Gin框架中优雅地处理HTTP请求体中的JSON数据
|
2月前
|
JSON JavaScript 数据格式
vue写入json数据到文本中+vue引入cdn的用法
vue写入json数据到文本中+vue引入cdn的用法
56 10