iOS通过ASIHTTPRequest提交JSON数据
先验知识——什么是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格式数据
首先给出主功能代码段,然后对代码进行详细解析:
- NSDictionary *user = [[NSDictionary alloc] initWithObjectsAndKeys:@"0", @"Version", nil];
- if ([NSJSONSerialization isValidJSONObject:user])
- {
- NSError *error;
- NSData *jsonData = [NSJSONSerialization dataWithJSONObject:user options:NSJSONWritingPrettyPrinted error: &error];
- NSMutableData *tempJsonData = [NSMutableData dataWithData:jsonData];
- //NSLog(@"Register JSON:%@",[[NSString alloc] initWithData:tempJsonData encoding:NSUTF8StringEncoding]);
- NSURL *url = [NSURL URLWithString:@"http://42.96.140.61/lev_version.php"];
- ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
- [request addRequestHeader:@"Content-Type" value:@"application/json; encoding=utf-8"];
- [request addRequestHeader:@"Accept" value:@"application/json"];
- [request setRequestMethod:@"POST"];
- [request setPostBody:tempJsonData];
- [request startSynchronous];
- NSError *error1 = [request error];
- if (!error1) {
- NSString *response = [request responseString];
- NSLog(@"Test:%@",response);
- }
- }
代码段第一行:
- NSDictionary *user = [[NSDictionary alloc] initWithObjectsAndKeys:@"0", @"Version", nil];
构造了一个最简单的字典类型的数据,因为自iOS 5后提供把NSDictionary转换成JSON格式的API。
第二行if判断该字典数据是否可以被JSON化。
- NSData *jsonData = [NSJSONSerialization dataWithJSONObject:user options:NSJSONWritingPrettyPrinted error: &error];
这一句就是把NSDictionary转换成JSON格式的方法,JSON格式的数据存储在NSData类型的变量中。
- NSMutableData *tempJsonData = [NSMutableData dataWithData:jsonData];
这一句是把NSData转换成NSMutableData,原因是下面我们要利用ASIHTTPRequest发送JSON数据时,其消息体一定要以NSMutableData的格式存储。
下面一句注视掉的语句
- //NSLog(@"Register JSON:%@",[[NSString alloc] initWithData:tempJsonData encoding:NSUTF8StringEncoding]);
主要作用是记录刚才JSON格式化的数据
下面到了ASIHTTPRequest功能部分:
- NSURL *url = [NSURL URLWithString:@"http://xxxx"];
- ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
这两句的主要功能是设置要与客户端交互的服务器端地址。
接下来两句:
- [request addRequestHeader:@"Content-Type" value:@"application/json; encoding=utf-8"];
- [request addRequestHeader:@"Accept" value:@"application/json"];
是设置HTTP请求信息的头部信息,从中可以看到内容类型是JSON。
接下来是设置请求方式(默认为GET)和消息体:
- [request setRequestMethod:@"POST"];
- [request setPostBody:tempJsonData];
一切设置完毕后开启同步请求:
- [request startSynchronous];
最后的一段:
- if (!error1) {
- NSString *response = [request responseString];
- NSLog(@"Rev:%@",response);
- }
是打印服务器返回的响应信息。
转载于:https://www.cnblogs.com/kenshinobiy/p/4278871.html
iOS通过ASIHTTPRequest提交JSON数据相关推荐
- Ajax提交json数据,通过jquery.cookie.js插件解决csrf_token问题
html代码和js代码 <!doctype html> <html lang="en"> <head><meta charset=&quo ...
- php模拟post提交提交json数据
php模拟post提交提交json数据,关键是在头部设置Content-Type <?php header("Content-type:application/json;charset ...
- php模拟post提交json数据,如何在PHP中利用curl模拟post提交json数据
如何在PHP中利用curl模拟post提交json数据 发布时间:2021-02-05 16:30:19 来源:亿速云 阅读:63 作者:Leah 本篇文章为大家展示了如何在PHP中利用curl模拟p ...
- postman测试提交json数据到数据接口
利用postman测试,采取post方式,提交json数据到服务器端接口,应该如下设置: 相应服务器端程序: @RestController public class IndexController ...
- iOS开发-简单解析JSON数据
什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {"na ...
- Form表单提交JSON数据
1.定义方法 //定义serializeObject方法,序列化表单 $.fn.serializeObject = function() {var o = {};var a = this.serial ...
- html+form+提交json数据,form表单提交json格式数据
我的实践整理.java 方式一: 发送数据web $(':submit').on('click',function(){ $.ajax({ url:"buy", type:&quo ...
- Apache JMeter 记一次使用HTTP工具POST提交JSON数据进行送积分高并发压测(二)
一.前言 前面文章已经介绍Apache JMeter的基本概率和如果使用,但作为一个开发人员,自己写的代码都应该要好好的COD EREVIEW,好好的自测吧.但是有些场景比如高并发.负载和性能测试的时 ...
- form表单ajax提交json数据
前端页面: <form id="userInfo" ><div class="weui-cell"><div class=&quo ...
- php 使用curl通过post方式提交json数据
2019独角兽企业重金招聘Python工程师标准>>> $arrayData = array("name" => "Hagrid", & ...
最新文章
- Android之GSON解析JSON
- Windows服务器SYSTEM权限Webshell无法添加3389账户情况突破总结
- [精华] 数据库的查询优化技术
- 用 gson 替换 fastjson 引发的线上问题分析
- apache的“按周配置访问日志轮询”,需要安装cronolg软件
- Query 快速入门教程
- try catch php 捕获,php try catch : 捕捉异常,抛出异常
- 如何在 JavaScript 中实现拖放
- I2C 总线协议详解
- CDR有哪些常用的快捷键
- 饥荒联机版服务器搭建_饥荒联机版steam专用服务器快速搭建教程
- 谈一下为什么程序员不要进外包吧
- 大数据治理包括哪几个方面
- UI设计师都用什么工具?
- 关于win10系统中谷歌浏览器崩溃的问题
- 094 chrome浏览页面常用快捷键
- qos cbs_如何取消CBS所有访问订阅
- 一阶电路实验报告心得_电路实训心得体会
- Taro 项目里面添加 Mock 数据
- 表示自己从头开始的句子_一切从头开始唯美句子,致自己重新开始的句子
热门文章
- access insert语句怎么写_ySQL中特别实用的几种SQL语句送给大家
- java 播放m4a 文件_Javasound没有通过JAAD(SPI)播放.m4a文件
- java biginteger 比较大小,Java BigInteger compareTo()用法及代码示例
- python找不到sys模块_在本地目录中找不到模块,存在于sys.path中
- shell判断false_Linuxshell编程,这个命令if;then...。什么时候if条件判断为true和false呢?...
- 《LabVIEW 虚拟仪器程序设计从入门到精通(第二版)》一导读
- JAVA必会算法--二分查找法
- Qt qtextstream读取文件
- 来自汽车行业的20个优秀的汽车推广网站
- zabbix(三)—— update