iOS 网络请求数据两种请求方式GET,POST

ios-iOS数据的网络请求.zip iOS数据的网络请求 立即下载

<span style="font-size:18px;">
</span>
两种请求方式的比较

相同点:都能给服务器传输数据 

不同点:

1、给服务器传输数据的方式:

GET:通过网址字符串。POST:通过data

2、传输数据的大小:GET:⽹址字符串最多255字节。POST:使用NSData,容量超过1G

3、安全性:GET:所有传输给服务器的数据,显示在网址里,类似于密码的明文输入,直接可见。

POST:数据被转成NSData(二进制数据),类似于密码的密文输⼊入,⽆无法直接读取。 

连接方式

同步:使用一个线程(主线程)完成所有的工作,效率低,当线程正在执行一个任务的时候无法执行另一个任务,所有如果使用同步进行网络数据的请求,那么在该线程进行网络请求时,暂时无法响应用户的点击事件,用户体验极差

异步:再开一个线程(子线程)去完成任务,此时,主线程依然可以监听用户的点击事件,不会造成卡顿,用户体验较好

异步联接有两种实现⽅方式:

设置代理,接收数据实现block 

异步联接有两种实现⽅方式:

设置代理,接收数据实现block 

代码示例:
//GET同步
<span style="font-size:18px;">//1.创建网址字符串
    NSString *urlString = @"http://api.map.baidu.com/place/v2/search?query=银行&region=郑州&output=json&ak=6E823f587c95f0148c19993539b99295";
    //2.进行转码
    NSString *newUrlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    //3.创建网址对象
    NSURL *url = [NSURL URLWithString:newUrlString];
 //   NSLog(@"%@", url);
    //4.创建网络请求对象
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    //5.发起网络请求
    NSURLResponse *response = nil;
    NSError *error = nil;
    NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
 //   NSLog(@"%@", data);
    [self parserJosn:data];
</span>
//JSON数据解析
<span style="font-size:18px;">- (void)parserJosn:(NSData *)data{
    [self.dataSource removeAllObjects];
    NSError *error1 = nil;
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&error1];
    NSArray *arr = dic[@"results"];
    for (NSDictionary *dic in arr) {
        Bank *bank = [[Bank alloc] initWithDictionary:dic];
        [self.dataSource addObject:bank];
        [bank release];
    }
    [self.tableView reloadData];</span>
<span style="font-size:18px;">}
</span>
<span style="font-size:18px;">//GET异步</span>
<span style="font-size:18px;">  // (1)block
//    //1.创建网址字符串
    NSString *urlString = @"http://api.map.baidu.com/place/v2/search?query=银行&region=郑州&output=json&ak=6E823f587c95f0148c19993539b99295";
    //2.转码
    NSString *newUrlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    //3.创建网址对象
    NSURL *url = [NSURL URLWithString:newUrlString];
//    //4.创建网络请求对象
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
//    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
//        //解析同上
//        [self parserJosn:data];
//    }];
</span>
<p style="margin-top: 0px; margin-bottom: 0px; font-family: Menlo;"><span style="font-size:18px;"> //(2)delegate</span></p><p style="margin-top: 0px; margin-bottom: 0px; font-family: Menlo;"><span style="font-size:18px;">    [NSURLConnection connectionWithRequest:request delegate:self]; </span></p><p style="margin-top: 0px; margin-bottom: 0px; font-family: Menlo;"><span style="font-size:18px;">}</span></p><div><pre name="code" class="objc"><span style="font-size:18px;">#pragma mark - NSURLConnectionDataDelegate
//当已经收到服务器响应时触发
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    //在该方法里创建用于拼接data的对象
    self.data = [NSMutableData dataWithCapacity:1];
}
//已经收到数据时触发(如果数据量过大,该方法调用多次分批返回数据)
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    [self.data appendData:data];
}
//数据已经传输完成时触发
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
    //数据传输完成后进行解析
    [self parserJosn:self.data];
    
}
#pragma mark - NSURLConnectionDelegate
//链接发生错误时触发
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    
}
</span>





//POST同步
<span style="font-size:18px;">//1.生成网址字符串
    NSString *urlString = @"http://api.tudou.com/v3/gw";
    //2.创建网址对象
    NSURL *url = [NSURL URLWithString:urlString];
    //3.创建请求参数字符串
    NSString *parmString = @"method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10";
    //4.对参数字符串进行转码
    NSString *newParmString = [parmString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    //5,创建请求对象
    NSMutableURLRequest *mutableRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
    //6.设置请求体
    [mutableRequest setHTTPBody:[newParmString dataUsingEncoding:NSUTF8StringEncoding]];
    //7.设置请求类型
    [mutableRequest setHTTPMethod:@"POST"];
    //8.发起网络链接请求
    NSData *data = [NSURLConnection sendSynchronousRequest:mutableRequest returningResponse:nil error:nil];
 //   NSLog(@"%@", data);
    [self parserJosn:data];
</span>

<span style="font-size:18px;">- (void)parserJosn:(NSData *)data{
    NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
    NSDictionary *dic1 = dic[@"multiResult"];
    NSMutableArray *arr = dic1[@"results"];
    NSLog(@"%@", dic1);
    for (NSDictionary *dic in arr) {
        PostModel *model = [[PostModel alloc] initWithDictionary:dic];
        [self.dataSource addObject:model];
    }
    [self.tableView reloadData];
}
</span>
//POST异步
<span style="font-size:18px;">//(1)block
    NSString *urlString = @"http://api.tudou.com/v3/gw";
    NSURL *url = [NSURL URLWithString:urlString];
    NSString *parmString = @"method=album.channel.get&appKey=myKey&format=json&channel=t&pageNo=1&pageSize=10";
    NSString *newParmString = [parmString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10];
    [request setHTTPBody:[newParmString dataUsingEncoding:NSUTF8StringEncoding]];
    [request setHTTPMethod:@"POST"];
//    [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
//        [self parserJosn:data];
//    }];
    //(2)delegate
    [NSURLConnection connectionWithRequest:request delegate:self];
}
#pragma mark - NSURLConnectionDataDelegate
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    self.data = [NSMutableData dataWithCapacity:1];
}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    [self.data appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
    [self parserJosn:self.data];
}
#pragma mark - NSURLConnectionDelegate
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    
}
</span>


请求图片并给它加上一个进度条(添加的label)
<span style="font-size:18px;">//1.创建网址字符串
    NSString *imageURL = @"http://image.zcool.com.cn/56/13/1308200901454.jpg";
    //2.转码
    NSString *newImageURl = [imageURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    //3.生成网址对象
    NSURL *url = [NSURL URLWithString:newImageURl];
    //4.创建请求对象
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    //5.发起网络请求
    [NSURLConnection connectionWithRequest:request delegate:self];
    

#pragma mark - NSURLConnectionDataDelegate
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response{
    self.data = [NSMutableData data];
 //   NSLog(@"%lld", response.expectedContentLength);
    //存储文件的总大小
    self.length = response.expectedContentLength;

}

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data{
    [self.data appendData:data];
    self.image.image = [UIImage imageWithData:self.data];
    //把实时计算的结果赋值给label
   // self.progressBar.text = [NSString stringWithFormat:@"%ld / %llu", self.data.length,  self.length];
    self.progressBar.text = [NSString stringWithFormat:@"%.2f%%", self.data.length * 1.0 / self.length * 100];

}

- (void)connectionDidFinishLoading:(NSURLConnection *)connection{
    
}
#pragma mark - NSURLConnectionDelegate
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error{
    
}
</span>







SpotBugs实战:10大类Bug检测规则详解与代码优化实例(附避坑清单) 本文深入解析SpotBugs在Java开发中的实战应用,详细讲解10大类Bug检测规则与代码优化实例,包括NPE防御、多线程安全、性能优化等关键问题。通过具体代码示例和避坑清单,帮助开发者提升代码质量,有效集成到CI/CD流程中。 阅读详情

相关推荐

Tessent_StdcellLib

第二种为 Tessent Cell lib,既可用于功能仿真,也可以用于测试逻辑插入。lib包含了用于仿真的功能信息,也包含DFT cell属性。如何使用tessent工具将stdcell verilog 仿真模型转换为tessent自己的lib。运行后工具会生成一个atpg的lib文件,打开文件,找到一个带SI的DFF,只有功能描述。tessnt lib分为两种,第一种为ATBG lib,可以用于仿真;打开生成的lib文件,多了dft_cell_selection。第二部:编写attributes文件。

qq_40411444的博客 2134

Ios 设置网络请求参数为json格式

 有两种方法1、 设置请求的参数类型  AFJSONRequestSerializer_httpSessionManager.requestSerializer = [AFHTTPRequestSerializer serializer];2、在请求体里面设置requestNSData *paramerData = [NSJSONSerialization dataWithJSONObject:p...

ANDY_GUO_wei的专栏 3226

从ST电机库到TI InstaSPIN:手把手对比两种主流FOC实现中的坐标变换差异

本文深入对比了ST电机库与TI InstaSPIN在FOC实现中的坐标变换差异,包括坐标系定义、变换系数和角度处理等关键点。针对BLDC和PMSM电机控制,提供了从理论到实践的移植方案,帮助工程师快速解决平台切换中的性能问题。特别解析了Clarke/Park变换在两种实现中的微妙差异及其对PI控制的影响。

weixin_28724661的博客 398

ios url 请求头添加参数及自定义cookie

通过请求头可以传递 一些web 想要的一些信息,但是这个方法有些局限性,如果web 跳转的时候头的信息会消息,最好的方法就是自定义cookie 传值    NSURL* url = [NSURL URLWithString:self.url];   NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL:

冷胜任 的专栏 1万+

【国民技术N32项目移植】基于 Windows 的 ARM GCC 开发环境

【国民技术N32项目移植】基于 Windows 的 ARM GCC 开发环境

weixin_42150032的博客 1361

(OSTrack)Joint Feature Learning and Relation Modeling for Tracking A One-Stream Framework

Joint Feature Learning and Relation Modeling for Tracking A One-Stream Framework (OSTrack)

小火山的博客 1653

仅发送options请求,没有发送post解决方案

仅发送options请求,没有发送post解决方案

asdfgh0077的博客 1571

Cibersort免疫浸润 --- 详细教程

免疫浸润是指免疫细胞如淋巴细胞、浆细胞、巨噬细胞等进入到组织或器官中,并在这些组织或器官中发挥免疫功能的过程。免疫细胞的浸润可以是炎症反应的一部分,也可以是针对感染、肿瘤或其他疾病的免疫应答的一部分。免疫浸润通过调节免疫反应和炎症反应的程度和类型,起到维护机体免疫平衡和清除异常细胞或病原体的作用。在某些情况下,免疫浸润可能导致炎症反应过度,引起组织损伤,例如自身免疫性疾病。因此,免疫浸润在许多疾病的诊断和治疗中都具有重要的意义。免疫浸润可以通过组织切片染色和免疫组织化学等方法观察和分析。

ZxVSaccount的博客 9107

对请求的request添加一些参数

- (NSURLRequest *)addHeaderRequestWithUrl:(NSString *)urlStr{ NSMutableURLRequest *mutableRequest = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:urlStr]]; NSString *token= [H...

weixin_30951389的博客 525

2026年华为od机试真题题库

OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)OD统一考试(E卷)

面试高手的博客 19万+

大厂硬件笔试机试题ASIC设计方向-卷3

本文提供了30道硬件工程师机试题目,涵盖数字逻辑、模拟电路、CMOS和信号处理等核心领域。选择题和判断题均配有详细解析,重点考察Verilog编程、CMOS特性、触发器设计、采样定理等知识点。题目难度适中但覆盖面广,如Verilog中阻塞/非阻塞赋值的区别、CMOS静态功耗来源、Nyquist采样定理、通用逻辑门判断等。备考建议强调掌握逻辑门设计、Verilog时序电路编写和CMOS特性理解。这些题目反映了华为等大厂硬件机试的典型考查内容,通过系统复习可有效提升机试成绩,为后续面试奠定基础。

启芯硬件的博客 544

[Xcode 实际操作]八、网络与多线程-(8)使用同步Get方式查询某地天气

目录:[Swift]Xcode实际操作 本文将演示如果通过Get的方式,请求某地天气信息,同步获取网络数据, 一旦发送同步请求,程序将停止用户交互,直至服务器返回数据。 为了增强数据访问的安全性,从9.0版本开始,Xcode默认会把所有的网络请求,修改为https安全请求。 也可以修改配置文件,以支持普通的网络请求。 点击打开【Info.plist】属性列表文件。 在配置文件编辑区的空...

weixin_30480583的博客 201

RK3588 C++ MeloTTS 推理

本文介绍了基于RK3588平台和RKNN工具链实现的端侧语音合成(TTS)系统。该系统支持中英文混合输入处理,通过自动合并英文单词、转换标点符号等方式预处理文本,并将其转换为音素和声调序列。核心推理流程包含编码器、中间处理和解码器三个阶段:编码器将音素序列转为隐藏状态,中间处理调节音调和语速,解码器生成最终波形。代码示例展示了输入数据设置和模型推理过程,利用RK3588内置NPU实现高效语音合成。该系统展现了在边缘计算设备上实现复杂AI任务的能力。

J。 199

[iOS开发]网络请求之---GET和POST

[iOS开发]网络请求之—GET和POST GET和POST的区别 从字面意思来看,GET是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求 GET是获取信息,而不是修改信息,类似数据库查询功能一样,数据不会被修改 GET请求的参数会跟在url后进行传递,请求的数据会附在URL之后,以?分割URL和传输数据,参数之间以&相连,%XX中的XX为该符号以16进制表示的ASCII,如果数据是英文字母/数字,原样发送,如果是空格,转换为+,如果是中文/其他字符,则直接把字符串用BASE

weixin_51638861的博客 1315

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

iOS- 网络访问两种常用方式【GET & POST】实现的几个主要步骤

1.前言                               上次,在博客里谈谈了【GET & POST】的区别,这次准备主要是分享一下自己对【GET & POST】的理解和实现的主要步骤。 在这就不多废话了,直接进主题,有什么不足的欢迎大家指出来。 网络访问两种常用方式【GET & POST】的区别 2.GET                  ...

alexhua1444的博客 217

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

iOS 网络请求

0.iOS的网络请求方式有GET请求,POST请求 区别:a.Get是拿数据,对服务器来说,相对安全;    Post是先传数据,然后再拿数据,对服务器来说,相对不安全 b.Get  请求参数欠安全,参数暴露在外面,       Post 请求参数更安全,看不见参数         c.Post有数据体,服务器接收到数据体,对数据体做解析,再根据数据体内容,返回一个结果给客户端 1

omgd的学习笔记 667

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

iOS开发之网络编程篇二:Get,Post请求差异及用法

客户端向服务器发送请求,请求方式有两种:一种get请求,一种post请求。get请求是将信息直接拼接在URL后面,在真正开发中用到比较多;post请求是将一些比较重要的信息转化为二进制流。 一、get请求 在iOS下进行网络编程主要分为以下三步      客户端向服务器发送请求,请求方式有两种:一种get请求,一种post请求。 get请求是将信息直接拼接在URL后面,在真正

kenshin的专栏 429

iOS中GET 和 POST 数据请求

iOS中GET 和 POST 网络数据请求 同步请求和异步请求的差别: 1.同步请求,有主线程完成网路请求任务,在数据没有请求之前,用户的所有的交互事件应用都无法处理,会造成一种卡顿现象,影响用户体验 2.异步同步,系统默认开辟子线程完成网络请求任务,主线程依然会处理用户的交互事件,此时不会出现卡顿,一旦开辟子线程就会消耗资源(内存),此...

weixin_33694172的博客 133

ios android 同步请求,iOS上的http请求:get、post以及同步、异步

1、get:02.NSURL* URL = [NSURL URLWithString:[URLString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];03.04.NSURLRequest* request = [[NSURLRequest alloc]initWithURL:URL];05.NSURLRespo...

weixin_30650955的博客 417

基于AFNetworking封装的网络请求工具类【原创】

今天给大家共享一个我自己封装的网络请求类,希望能帮助到大家。 前提,导入AFNetworking框架, 关于修改AFN源码:通常序列化时做对text/plan等的支持时,可以一劳永逸的修改源代码,在acceptableContentTypes中修改成如下即可: self.acceptableContentTypes = [NSSet setWithObjects:@"appli...

dianye0094的博客 193

UIday1602:封装好的GET 和 POST 方法

封装好的GET 和 POST 方法

tiebanshao的博客 297

黄仁勋评马斯克:AI、自动驾驶与人形机器人的工程版图

GPU算力作为AI时代的核心基础设施,正在重塑大模型、自动驾驶与人形机器人三大领域的工程范式。大模型需要海量算力支撑训练与推理,自动驾驶依赖数据闭环实现感知迭代,人形机器人则通过仿真训练与强化学习走向具身智能。黄仁勋对马斯克的评价,本质上点出了这三条赛道的共同底座:算力生态、数据工程与边缘推理。对开发者而言,掌握模型部署优化(如TensorRT、量化压缩)、数据闭环构建以及推理成本控制,是切入这些高价值领域的关键。从本地部署小模型到大规模集群训练,从数据回灌到实时车端推理,工程能力的复用性远超想象。

weixin_34392435的博客 440

IOS网络请求中文转码

-(void)get { NSString *urlStr = @"http://120.25.226.186:32812/login2?username=小码哥&pwd=520it&type=JSON"; NSLog(@"转码前: %@",urlStr); //中文转码处理 urlStr = [u...

weixin_33885676的博客 85

UI17_NetWorkingTool

封装工具类处理数据

青山流云的博客 346

iOS请求数据两种方式(GET、POST)

iOS中请求数据的方式有两种方式 GET、 POST POST: 地址栏中不会有表单请求的参数; 参数数量和长度没有限制 GET: 将表单请求中的参数拼接到地址中进行传递; 参数数量和长度不能超过255字节 安全性: 请求数据用GET  提交大量表单数据用POST URL 的正规语法: 协议:// 授权(域名)/ 资源路径(文件按路径)?参数列表 (date=20131129

无名小人物的博客 9585
上一篇: iOS 自定义navigationBar上得字体属性
下一篇: iOS XML,JOSN数据解析
xiaoliu_iOS
博客等级 码龄11年 4粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值