OC语言知识6

本文目录

  • 一、异步POST请求
  • 二、NSURLConnection的其他请求方法

上一讲介绍了iOS中的异步GET请求,这讲来看看异步POST请求。

回到顶部

一、异步POST请求

假如请求路径是http://192.168.1.102:8080/MJServer/login,请求参数有2个:

  • username :母鸡
  • pwd :123

1.POST请求细节分析

要想在iOS中发送一个POST请求,首先要了解POST请求的一些细节:

1> 跟GET请求不一样的是,POST请求的请求参数不是拼接在请求路径后面,而是以请求体的形式发送到服务器端。

2> POST请求需要发送两部分的数据到服务器端:

* 请求体内容:所有的请求参数

username=%E6%AF%8D%E9%B8%A1&pwd=123

中文参数需要进行编码,参数"母鸡"被编码成"%E6%AF%8D%E9%B8%A1"

 

* 请求头信息:请求体长度、请求数据的类型

(这是我在FireBug中模拟POST请求的截图)

Content-Length是指请求体长度,Content-Type是指请求数据类型

 

2.POST请求代码实现

复制代码
 1 // 请求地址2 NSString *urlString = @"http://192.168.1.102:8080/MJServer/login";3 // 初始化一个NSURL对象4 NSURL *url = [NSURL URLWithString:urlString];5 6 // 初始化一个请求7 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];8 // 设置请求方法9 request.HTTPMethod = @"POST";
10 // 60秒请求超时
11 request.timeoutInterval = 60;
12 
13 // 拼接请求参数
14 NSString *params = @"username=母鸡&pwd=123";
15 // 对字符串进行编码后转成NSData对象
16 NSData *data = [params dataUsingEncoding:NSUTF8StringEncoding];
17 // 设置请求体
18 request.HTTPBody = data;
19 
20 // 设置请求头信息-请求体长度
21 NSString *contentLength = [NSString stringWithFormat:@"%i", data.length];
22 [request setValue:contentLength forHTTPHeaderField:@"Content-Length"];
23 // 设置请求头信息-请求数据类型
24 [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
25 
26 // 初始化一个连接
27 NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];
28 // 开始一个异步请求
29 [conn start];
复制代码

1> 在18行设置了请求体内容

2> 从第21~24行设置了请求头信息

3> 其实,第21~24行代码可以省略。只要我们在第18行设置了请求体,系统在发送POST请求时,会自动根据请求体内容加上相应的请求头信息

 

回到顶部

二、NSURLConnection的其他请求方法

除了start方法,NSURLConnection还提供了2个静态方法帮助我们发送HTTP请求

1.异步请求

复制代码
 1 // 请求地址2 NSString *urlString = @"http://192.168.1.102:8080/MJServer/login?username=123&pwd=123";3 // 初始化一个NSURL对象4 NSURL *url = [NSURL URLWithString:urlString];5 6 // 初始化一个请求7 NSURLRequest *request = [NSURLRequest requestWithURL:url];8 9 // 初始化一个操作队列
10 NSOperationQueue *queue = [[[NSOperationQueue alloc] init] autorelease];
11 // 发送一个异步请求
12 [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:
13 ^(NSURLResponse *response, NSData *data, NSError *error) {
14     // 解析成字符串数据
15     NSString *str = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
16     NSLog(@"%@", str);
17 }];
复制代码

在12行调用sendAsynchronousRequest:queue:completionHandler:方法发送一个异步HTTP请求,这个方法接收3个参数

* 第1个参数是一个NSURLRequest对象,封装的是一个GET请求

* 第3个参数是一个Block,当服务器成功返回数据时会回调这个Block,Block中的NSData *data参数就是服务器返回的数据

* 第2个参数是一个操作队列NSOperationQueue,当服务器成功返回数据时,系统会将第3个参数中传入的Block放到这个操作队列中执行

 

2.同步请求

前面说的都是异步请求,也是比较推荐的请求方式。NSURLConnection也提供了一个静态方法可以发送一个同步请求。

复制代码
 1 // 请求地址2 NSString *urlString = @"http://192.168.1.102:8080/MJServer/login?username=123&pwd=123";3 // 初始化一个NSURL对象4 NSURL *url = [NSURL URLWithString:urlString];5 6 // 初始化一个请求7 NSURLRequest *request = [NSURLRequest requestWithURL:url];8 9 // 发送一个同步请求
10 NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
11 
12 // 解析成字符串数据
13 NSString *str = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
14 NSLog(@"%@", str);
复制代码

在第10行调用了sendSynchronousRequest:returningResponse:error:方法发送了一个同步请求,这是一个阻塞式的方法,也就是等服务器返回所有数据后,这个方法才会返回,返回值是一个NSData对象,存放着服务器返回的所有数据

转载于:https://www.cnblogs.com/jameslbj/p/4290482.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/492528.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谁能引领国内人工智能芯片产业突围?

来源:国金证券摘要:我们认为中国在处理器/芯片领域的投资有加速的迹象,AI芯片的创业企业目前已达到40家左右。未来因人工智能边缘运算推理端和云端推理(Inferencing)芯片及设备成本,性能,耗电,效率的考量,以及各种处理器的特性不同…

OC语言知识12

本文目录 一、添加一个简单的图层二、添加一个显示图片的图层三、为什么CALayer中使用CGColorRef和CGImageRef这2种数据类型,而不用UIColor和UIImage?四、UIView和CALayer的选择五、UIView和CALayer的其他关系* 上一讲已经说过,UIView内部默认…

计算机视觉介绍

1.为什么要学习图像处理和计算机视觉 计算机视觉市场需求大,其是人工智能的重要分支。 计算机视觉岗位占所有AI岗位的40%。 但是,中国高校目前尚未设置计算机视觉学科己专业;学习者众多,学习分散,缺少统一教学体系&a…

认识工业互联网

来源:智汇工业摘要:工业互联网是实现智能制造的抓手,推动工业互联网是长期的工作。工业互联网分为广义的工业互联网和狭义的工业互联网。广义的工业互联网就是第四次工业革命的代名词。和德国工业4.0以及中国制造2025类同,都是工业…

模式识别:绪论

模式识别(pattern recognition):输入原始数据并根据其类别采取相应行为的能力。 具体实例:人脸识别、语音识别、文字识别、指纹识别、DNA序列分析。 要区分不同类别的个体,需要利用其一些物理特性上的差异,成为模式分类的特征。…

A16Z内部万字报告:人类与AI结合的最佳形态

来源:36Kr摘要:人工智能技术正在快速发展,将会给我们什么样的变化?人们应该如何与人工智能相处?近日,A16Z博客上放出了一篇内部报告,介绍了人工智能将会给我们的社会带来的变化,以及…

照明与图像

光通量: 人眼所能感受到的辐射功率,等于单位时间内某一波段的辐射能量和该波段的相对视见率的乘积。单位是lm(流明)1流明 0.00146瓦 辐照度 投射到一平表面上的辐射通量密度。指到达一表面上,单位时间,单位面积上的辐射能。以…

BZOJ3434 [Wc2014]时空穿梭

摔电脑摔电脑!JZP业界毒瘤! 400题纪念~哇终于上400了的说!!!好不容易欸! 题解什么的还是Orz iwtwiioi 我求组合数的方法明明是O(n)的,为什么这么慢!!!令人报警…

图像平滑滤波

卷积与滤波概念 离散卷积 丢两个骰子,求点数加起来为 ttt 的概率是多少? 两个骰子加起来为4的概率: f(1)g(3)f(2)g(2)f(3)g(1)f(1)g(3) f(2)g(2) f(3)g(1)f(1)g(3)f(2)g(2)f(3)g(1) 写成卷积标准形式为: (f∗g)(4)∑i13f(i)g(…

从全球制造业的迁移史,看中国制造业未来会怎么走?

来源:挖数(ID:washu66)摘要:中国制造后续如何发展?翻开全球制造业的迁移史,看是否能从中看出一点端倪。1/ 全球制造业的迁移史1/ 第一次大迁移第一次制造业大迁移发生在20世纪初,由美…

应用|5G时代10大应用场景!

来源:数字化企业摘要:5G商用日益临近,大家可曾想过5G技术未来有哪些具体的应用场景呢?作为5G领跑者的华为公司,早在2年前就出了一份白皮书,这份报告探讨了最能体现5G能力的十大应用场景。简要列表如下1.云V…

央行发布论文:区块链能做什么,不能做什么?

来源:悟空智能科央行发布工作论文《区块链能做什么、不能做什么?》,论文称,不要夸大或迷信区块链的功能。区块链应用要立足实际情况。目前区块链投融资领域泡沫明显。论文从经济学角度研究了区块链的功能。首先,在给出…

UVa 1225 Digit Counting

题意&#xff1a;给出n,将前n个整数顺次写在一起&#xff0c;统计各个数字出现的次数。 用的最笨的办法--直接统计-- 后来发现网上的题解有先打表来做的 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<algorithm> 5 us…

人工智能产业发展联盟公布首轮AI芯片基准评测结果,评估工具已开源

来源&#xff1a;量子位3月6日&#xff0c;由国际电信联盟、中国信息通信研究院联合主办&#xff0c;人工智能产业发展联盟&#xff08;AIIA&#xff09;和中兴通讯承办的国际论坛“AI in 5G——引领新时代论坛”在深圳召开。来自全球电信运营商、标准组织、互联网企业、设备厂…

图像分割I

为什么要图像分割&#xff1f; 目标 掌握图像分割的基本概念了解图像分割方法分类 目标&#xff1a;将图像划分为不同区域定义&#xff1a;令集合R代表整个图像区域&#xff0c;对R的图像分割可以看作是将R分成N个满足以下条件的非空子集R1,R2,...,RNR_1,R_2,...,R_NR1​,R2​…

图像分割II

区域增长算法 目标 掌握区域生长法的基本思想掌握图像分裂合并分割的基本思想及步骤 区域生长法分割 大津算法的局限性&#xff1a;噪声比较严重的图片、分割目标颜色渐变的情况&#xff0c;分割效果差。 区域生长&#xff1a;从种子点开始&#xff0c;按照一定准则&#x…

205页PPT,看5G+AI引领的下一个时代!

来源&#xff1a;国泰君安证券、暴点摘要&#xff1a;为大家分享一份国泰君安证券关于“电子行业2019年春季投资策略&#xff0c;5GAI系列研究”报告&#xff0c;详看哪些产业将迎来黄金期。预计5G换机高峰期将出现在2020~2023年&#xff0c;届时手机出货量将恢复增长。同时&am…

图像表示与描述

图像表示与描述 目标 掌握常见的基于轮廓特征的描述掌握常见的图像区域特征描述 对目标特征的测量是要利用分割结果进一步从图像中获取有用信息&#xff0c;为达到这个目的需要解决两个关键问题&#xff1a; 选用什么特征来描述目标(定性)如何精确测量这些特征(定量) 常见…

RISV-V未来将面临怎样的挑战?

来源&#xff1a;MoneyDJ、半导体行业观察继大陆的RISC-V联盟成立之后&#xff0c;台湾RISC-V联盟也在今年正式成立&#xff0c;这也让RISC-V的议题热度逐渐加温&#xff0c;事实上这也是许多人看好能够足以与ARM竞争的架构&#xff0c;加上目前许多国际大厂陆续采用RISC-V架构…

使用matlab程序,基于标准卡标定感压纸的压力分布

任务说明 使用富士感压纸(压力测试纸)测量压力&#xff0c;感压纸受压时会显现颜色&#xff0c;根据峰值应力呈现不同的颜色深度。感压制提供了标准比色卡&#xff0c;给出不同颜色深度对应的压力值。 要求使用matlab&#xff0c;对照标准比色卡&#xff0c;对实验中使用的比…