先验知识——什么是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 plaincopy
  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. NSURL *url = [NSURL URLWithString:@"http://42.96.140.61/lev_version.php"];
  9. ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
  10. [request addRequestHeader:@"Content-Type" value:@"application/json; encoding=utf-8"];
  11. [request addRequestHeader:@"Accept" value:@"application/json"];
  12. [request setRequestMethod:@"POST"];
  13. [request setPostBody:tempJsonData];
  14. [request startSynchronous];
  15. NSError *error1 = [request error];
  16. if (!error1) {
  17. NSString *response = [request responseString];
  18. NSLog(@"Test:%@",response);
  19. }
  20. }

代码段第一行:

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

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

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

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

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

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

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

下面一句注视掉的语句

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

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

下面到了ASIHTTPRequest功能部分:

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

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

接下来两句:

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

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

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

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

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

[cpp] view plaincopy
  1. [request startSynchronous];

最后的一段:

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

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

转载于:https://www.cnblogs.com/kenshinobiy/p/4278871.html

iOS通过ASIHTTPRequest提交JSON数据相关推荐

  1. Ajax提交json数据,通过jquery.cookie.js插件解决csrf_token问题

    html代码和js代码 <!doctype html> <html lang="en"> <head><meta charset=&quo ...

  2. php模拟post提交提交json数据

    php模拟post提交提交json数据,关键是在头部设置Content-Type <?php header("Content-type:application/json;charset ...

  3. php模拟post提交json数据,如何在PHP中利用curl模拟post提交json数据

    如何在PHP中利用curl模拟post提交json数据 发布时间:2021-02-05 16:30:19 来源:亿速云 阅读:63 作者:Leah 本篇文章为大家展示了如何在PHP中利用curl模拟p ...

  4. postman测试提交json数据到数据接口

    利用postman测试,采取post方式,提交json数据到服务器端接口,应该如下设置: 相应服务器端程序: @RestController public class IndexController ...

  5. iOS开发-简单解析JSON数据

    什么是JSON JSON是一种轻量级的数据格式,一般用于数据交互 服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典和数组 {"na ...

  6. Form表单提交JSON数据

    1.定义方法 //定义serializeObject方法,序列化表单 $.fn.serializeObject = function() {var o = {};var a = this.serial ...

  7. html+form+提交json数据,form表单提交json格式数据

    我的实践整理.java 方式一: 发送数据web $(':submit').on('click',function(){ $.ajax({ url:"buy", type:&quo ...

  8. Apache JMeter 记一次使用HTTP工具POST提交JSON数据进行送积分高并发压测(二)

    一.前言 前面文章已经介绍Apache JMeter的基本概率和如果使用,但作为一个开发人员,自己写的代码都应该要好好的COD EREVIEW,好好的自测吧.但是有些场景比如高并发.负载和性能测试的时 ...

  9. form表单ajax提交json数据

    前端页面: <form id="userInfo" ><div class="weui-cell"><div class=&quo ...

  10. php 使用curl通过post方式提交json数据

    2019独角兽企业重金招聘Python工程师标准>>> $arrayData = array("name" => "Hagrid", & ...

最新文章

  1. Android之GSON解析JSON
  2. Windows服务器SYSTEM权限Webshell无法添加3389账户情况突破总结
  3. [精华] 数据库的查询优化技术
  4. 用 gson 替换 fastjson 引发的线上问题分析
  5. apache的“按周配置访问日志轮询”,需要安装cronolg软件
  6. Query 快速入门教程
  7. try catch php 捕获,php try catch : 捕捉异常,抛出异常
  8. 如何在 JavaScript 中实现拖放
  9. I2C 总线协议详解
  10. CDR有哪些常用的快捷键
  11. 饥荒联机版服务器搭建_饥荒联机版steam专用服务器快速搭建教程
  12. 谈一下为什么程序员不要进外包吧
  13. 大数据治理包括哪几个方面
  14. UI设计师都用什么工具?
  15. 关于win10系统中谷歌浏览器崩溃的问题
  16. 094 chrome浏览页面常用快捷键
  17. qos cbs_如何取消CBS所有访问订阅
  18. 一阶电路实验报告心得_电路实训心得体会
  19. Taro 项目里面添加 Mock 数据
  20. 表示自己从头开始的句子_一切从头开始唯美句子,致自己重新开始的句子

热门文章

  1. access insert语句怎么写_ySQL中特别实用的几种SQL语句送给大家
  2. java 播放m4a 文件_Javasound没有通过JAAD(SPI)播放.m4a文件
  3. java biginteger 比较大小,Java BigInteger compareTo()用法及代码示例
  4. python找不到sys模块_在本地目录中找不到模块,存在于sys.path中
  5. shell判断false_Linuxshell编程,这个命令if;then...。什么时候if条件判断为true和false呢?...
  6. 《LabVIEW 虚拟仪器程序设计从入门到精通(第二版)》一导读
  7. JAVA必会算法--二分查找法
  8. Qt qtextstream读取文件
  9. 来自汽车行业的20个优秀的汽车推广网站
  10. zabbix(三)—— update