网络GET

 一. 同步

//1.创建网址字符串对象

NSString *urlStr = [NSString stringWithFormat:@"http://api.map.baidu.com/place/v2/search?query=%@&region=%@&output=json&ak=6E823f587c95f0148c19993539b99295", @"大保健", @"郑州"];

//2.如果网址中出现中文, 需要进行URLEncode

NSString *newuRLStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

//3.创建NSURL对象

NSURL *url = [NSURL URLWithString:newuRLStr];

//4.创建请求对象(NSURLRequest)

NSURLRequest *request = [NSURLRequest requestWithURL:url];

NSURLResponse *response = nil; // 存储服务器响应信息

NSError *error = nil; // 存储请求失败信息

//5.建立连接

NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

//解析

/**

*  同步连接和异步连接之间的区别

1.同步连接由主线程完成网络的请求任务, 在数据请求完毕之前, 所有用户交互无法处理, 会造成程序卡顿, 影响用户体验

2.异步连接, 系统默认开辟子线程完成网络请求任务, 主线程依旧处理用户交互, 因此, 用户体验很好, 操作流畅 -- 采用以空间换时间.

*/

二.异步

//1.创建网址字符串对象

NSString *urlStr = [NSString stringWithFormat:@"http://api.map.baidu.com/place/v2/search?query=%@&region=%@&output=json&ak=6E823f587c95f0148c19993539b99295", @"养生", @"郑州"];

//2.如果网址中出现中文, 需要进行URLEncode

NSString *newuRLStr = [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

//3.创建NSURL对象

NSURL *url = [NSURL URLWithString:newuRLStr];

//4.创建请求对象(NSURLRequest)

NSURLRequest *request = [NSURLRequest requestWithURL:url];

//(1)block 方式

[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

//解析

...

}];

//(2)协议和代理

self.connection = [NSURLConnection connectionWithRequest:request delegate:self];

#pragma mark - NSURLConnectionDataDelegate

//当收到服务器响应时 触发

- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {

//当收到服务器响应时, 开辟空间(data)

self.data = [NSMutableData data];

}

//当收到服务器传输的数据时 触发(可能会触发多次)

//当传输的数据比较大时, 服务器并不会将所有的数据全部传输过来, 可能每一次传输一部分, 每一次传输都会触发该方法

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {

//当收到数据时, 拼接数据

[self.data appendData:data];

}

//当收到服务器响传输的数据结束时 触发

- (void)connectionDidFinishLoading:(NSURLConnection *)connection {

[self analysisData:self.data];

}

//请求失败 触发

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {

NSLog(@"失败了!");

}

#pragma mark -解析方法

三.解析

- (void)analysisData:(NSData *)data {

[self.dataSource removeAllObjects];

//6.解析

//使用可变字典接受, 一放面, 将解析之后获得的是可变的容器, 另一方面, 得到的是最外层的字典, 因此, 使用可变字典接受数据

NSMutableDictionary *dic = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];

//获取字典中的小数组

NSArray *dataArray = dic[@"results"];

//将数组中的字典对象转化为business 对象

for (NSDictionary *dic in dataArray) {

Business *business = [[Business alloc]init];

//使用KVC 进行赋值

[business setValuesForKeysWithDictionary:dic];

//添加到数组

[self.dataSource addObject:business];

//  释放 释放 释放 释放 释放

[business release];

}

[self.tableView reloadData];

}

时间: 2024-11-09 05:59:30

网络GET的相关文章

iOS开发——网络编程OC篇&Socket编程

Socket编程 一.网络各个协议:TCP/IP.SOCKET.HTTP等 网络七层由下往上分别为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. 其中物理层.数据链路层和网络层通常被称作媒体层,是网络工程师所研究的对象: 传输层.会话层.表示层和应用层则被称作主机层,是用户所面向和关心的内容. http协议   对应于应用层 tcp协议    对应于传输层 ip协议     对应于网络层 三者本质上没有可比性.  何况HTTP协议是基于TCP连接的. TCP/IP是传输层协议,主要

网络攻防第一次作业(201421450010)

姓名:陈书扬 学号:201421450010 指导教师:高见 1.虚拟机安装与调试 安装windows和linux(kali)两个虚拟机,均采用NAT网络模式,查看主机与两个虚拟机器的IP地址,并确保其连通性.同时为两个虚拟机做一个快照 windows虚拟机 Linux虚拟机 本地主机win10 两台主机都ping通 2.Windows基本命令 dir显示目录   cd 进入目录 Arp -a -d -s arp缓存 net share 查看计算机IPC$共享资源 netstat -ano网络链

10.6 监控io性能 - 10.7 free命令 - 10.8 ps命令 - 10.9 查看网络状态 - 10.10 linux下抓包

- 10.6 监控io性能 - 10.7 free命令 - 10.8 ps命令 - 10.9 查看网络状态 - 10.10 linux下抓包 - 扩展tcp三次握手四次挥手 http://www.doc88.com/p-9913773324388.html  - tshark几个用法:http://www.aminglinux.com/bbs/thread-995-1-1.html  # 10.6 监控io性能 ![mark](http://oqxf7c508.bkt.clouddn.com/b

Kali linux网络配置

Kali linux 安装完成后,需要对其网络进行配置.使用DHCP服务是配置网卡最简单的方法之一,但渗透测试时通常不会这样做,因为系统会被记录在DHCP服务器的数据库中. 1  动态DHCP方式 配置文件地址: /etc/network/interface # 启动系统激活设备 # Loop回环地址 auto lo iface lo inet loopback # 启动系统激活设备 # 网卡eth0设置为DHCP类型 auto eth0 iface eth0 inet dhcp 2  静态St

深度复数网络 Deep Complex Networks

转自:https://www.jiqizhixin.com/articles/7b1646c4-f9ae-4d5f-aa38-a6e5b42ec475  (如有版权问题,请联系本人) 目前绝大多数深度学习模型中的数学都是实数值的,近日,蒙特利尔大学.加拿大国家科学院-能源/材料/通信研究中心(INRS-EMT).微软 Maluuba.Element AI 的多名研究者(其中包括 CIFAR Senior Fellow Yoshua Bengio)在 arXiv 上发布了一篇 NIPS 2017(

C#网络编程技术FastSocket实战项目演练

一.FastSocket课程介绍 .NET框架虽然微软提供了socket通信的类库,但是还有很多事情要自己处理,比如TCP协议需要处理分包.组包.粘包.维护连接列表等,UDP协议需要处理丢包.乱序,而且对于多连接并发,还要自己处理多线程等等.本期分享课程阿笨给大家带来的是来源于github开源Socket通信中间件:FastSocket,目的就是把大家从繁琐的网络编程技术中彻底地解放和释放出来. 阿笨只想安安静静的学习下网络编程技术Socket后,将学习的成果直接灵活的运用到自己的实际项目中去.

Android网络通讯简介

网络通信应该包含三部分的内容:发送方.接收方.协议栈.发送方和接收方是参与通信的主体,协议栈是发送方和接收方进行通信的契约.按照服务类型,网络通信可分为面向连接和无连接的方式.面向连接是在通信前建立通信链路,而通信结束后释放该链路.无连接的方式则不需要在通信前建立通信连接,这种方式不保证传输的质量. Android提供了多种网络通信的方式,如Java中提供的网络编程,在Android中都提供了支持.Android中常用的网络编程方式如下: 针对TCP/IP协议的Socket和ServerSock

openvpn实现分流,指定IP走VPN,其它走本地网络

最近研究了Openvpn好久.现在写一点心得出来. 客户需求:看香港某几个网站使用openvpn翻墙过去,其它所有访问不能用翻墙,要走本地. 系统环境: Centos x64位 6.8, 使用在线yum安装 一.服务器端配置 详细配置参考其它配置文档 [[email protected] openvpn]# rpm -qa | grep openvpn openvpn-2.3.11-1.el6.x86_64 生成ta.key文件,用于tls-auth认证. # openvpn --genkey

如何构建安全的网络连接机制

随着计算机网络与信息化的不断发展,DT时代数据资源的多样性.庞大性.分布广泛性,导致信息安全问题日趋复杂,计算机网络的开放框架所带来的威胁层出不穷.面对严峻的网络安全形势,传统的信息安全系统从架构和强度上已经难有大的突破.人们在信息安全的实践中逐渐认识到,大多数安全隐患来自于终端,如何解决这项问题,成为了各网络大咖们需要攻克的又一课题. 勤智数码产品方案部-秦杨凯给出了这个课题的解决方案-- 通过构建对等规格的网络安全协议和的信息资源管理体系的分布式网络,可快速提高数据资源自由流通.往来无碍.安

网络运维调查

我想在北京就业 通过百度我知道工作职位仅在北京地区网络运维的职位有2668个,朝阳区276个,东城33个,海淀258个,石景山15个,延庆2个,西城48个,昌平67个,丰台74个,怀柔4个,通州28个,密云3个,大兴57个,房山5个,门头沟3个,顺义18个.薪资方面,4001~6000元每个月的有793个,6001~8000元每个月的有1059个,8001~10000元每个月的有709个,10001~15000元每个月的有509个,15001~20000元每个月的有301个,20001~3000