NSURLSession请求网络-01-网络

/*

网络请求的流程:

1.构造NSURL连接地址

2.构造NSURLRequest请求对象,包含请求头和请求体信息。

3.构造NSURLSessionConfiguration,可选

4.构造NSURLSession会话对象

5.创建请求任务

6.发送网络请求

*/

  1 //
  2 //  ViewController.m
  3 //  01-NSURLSession请求网络
  4 //
  5 //
  6
  7 #import "ViewController.h"
  8
  9 @interface ViewController ()
 10
 11 @end
 12
 13 @implementation ViewController
 14
 15 - (void)viewDidLoad {
 16     [super viewDidLoad];
 17
 18 }
 19
 20 - (IBAction)getAction:(id)sender {
 21
 22     /*
 23      网络请求的流程:
 24      1.构造NSURL连接地址
 25      2.构造NSURLRequest请求对象,包含请求头和请求体信息。
 26      3.构造NSURLSessionConfiguration,可选
 27      4.构造NSURLSession会话对象
 28      5.创建请求任务
 29      6.发送网络请求
 30
 31      */
 32
 33     NSURL *url = [NSURL URLWithString:@"http://piao.163.com/m/cinema/list.html?app_id=1&mobileType=iPhone&ver=2.6&channel=appstore&deviceId=9E89CB6D-A62F-438C-8010-19278D46A8A6&apiVer=6&city=110000"];
 34
 35     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
 36
 37     request.timeoutInterval = 15;
 38     request.HTTPMethod = @"GET";
 39     //请求头的设置
 40 //    request.allHTTPHeaderFields = @{
 41 //
 42 //                                    };
 43 //    request setValue:<#(nullable NSString *)#> forHTTPHeaderField:<#(nonnull NSString *)#>
 44
 45     NSURLSession *session = [NSURLSession sharedSession];
 46
 47
 48     NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
 49         //网络请求完成,获取响应数据后会回调的block
 50         //data表示获取的数据,response表示请求对象,error表示请求错误
 51         NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
 52         //获取状态码
 53         NSLog(@"statusCode:%li", httpResponse.statusCode);
 54
 55         //获取响应头
 56         NSDictionary *responseHeader = httpResponse.allHeaderFields;
 57         NSLog(@"responseHeader:%@", responseHeader);
 58
 59         NSError *jsonError = nil;
 60
 61         NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError];
 62
 63         if (!jsonError) {
 64
 65             //显示我们的数据,如果要更新UI则需要回到主线程完成。
 66             NSLog(@"%@", result);
 67
 68         }
 69
 70
 71
 72     }];
 73
 74     //发送网络请求
 75     [task resume];
 76
 77
 78 }
 79
 80 - (IBAction)postAction:(id)sender {
 81
 82     NSURL *url = [NSURL URLWithString:@"http://piao.163.com/m/cinema/schedule.html?app_id=1&mobileType=iPhone&ver=2.6&channel=appstore&deviceId=9E89CB6D-A62F-438C-8010-19278D46A8A6&apiVer=6&city=110000"];
 83
 84     NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
 85
 86     request.timeoutInterval = 15;
 87     request.HTTPMethod = @"POST";
 88
 89     NSString *bodyString = @"cinema_id=1533";
 90     NSData *bodyData = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
 91     //POST请求的请求参数加在请求体中。
 92     request.HTTPBody = bodyData;
 93
 94     NSURLSession *session = [NSURLSession sharedSession];
 95
 96
 97     NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
 98
 99
100         NSError *jsonError = nil;
101
102         NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError];
103
104         if (!jsonError) {
105
106             //显示我们的数据,如果要更新UI则需要回到主线程完成。
107             NSLog(@"%@", result);
108
109         }
110
111
112     }];
113
114     [task resume];
115
116 }
117 @end
时间: 2024-12-17 22:10:24

NSURLSession请求网络-01-网络的相关文章

iOS开发 - 第04篇 - 网络 - 01 - NSOperation &amp; 网络基础

实现:Cell图片下载程序 源代码下载地址:点击打开链接 1.Cell图片下载程序 1.1 界面 1.2 基本思路 1> Storyboard中添加导航控制器,根控制器为UITableViewController 2> 新建HMAppsViewController,关联 3> 导入app.plist,新建HMApp,提供类方法,利用KVC,字典转模型 4>HMAPPViewController中懒加载模型数组 5> 实现ViewController数据源方法,设置Cell的t

java如果模拟请求重启路由器(网络爬虫常用),还有java如何下载图片

我们如果在公司或家里使用网络爬虫去抓取自己索要的一些数据的时候,常常对方的网站有defence机制,会给你的http请求返回500错误,只要是相同IP就请求不到数据,这时候我们只能去重启路由器,这样IP地址会改变,网络爬虫就能正常工作了 下面是通过发送Socket请求来模拟路由器的重启指令: protected void rebotadsl() { try { BufferedOutputStream sender = null; String url = baseURL; URL target

iOS开发网络篇—网络编程基础

iOS开发网络篇—网络编程基础 一.为什么要学习网络编程 1.简单说明 在移动互联网时代,移动应用的特征有: (1)几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图 (2)只有通过网络跟外界进行数据交互.数据更新,应用才能保持新鲜.活力 (3)如果没有了网络,也就缺少了数据变化,无论外观多么华丽,终将变成一潭死水 移动网络应用 = 良好的UI + 良好的用户体验 + 实时更新的数据 新闻:网易新闻.新浪新闻.搜狐新闻.腾讯新闻 视频:优酷.百度视频.搜狐视频.爱奇艺视频 音乐

Socket网络编程--网络爬虫(1)

我们这个系列准备讲一下--网络爬虫.网络爬虫是搜索引擎系统中十分重要的组成部分,它负责从互联网中搜集网页,采集信息,这些网页信息用于建立索引从而为搜索引擎提供支持,它决定着整个引擎系统的内容是否丰富,信息是否即时,因此其性能的优劣直接影响着搜索引擎的效果.网络爬虫的基本工作原理: (1)从一个初始URL集合中挑选一个URL,下载该URL对应的页面: (2)解析该页面,从该页面中抽取出其包含的URL集合,接下来将抽取的URL集合再添加到初始URL集合中: (3)重复前两个过程,直到爬虫达到某种停止

Linux网络编程------网络编程基础

Socket(套接字),类似文件描述符,三种 1.流式套接字(SOCK_STREAM):可以提供可靠的.面向连接的通讯流,它使用TCP协议.TCP保证了数据传输的正确性和顺序性. 2.数据报套接字(SOCK_DGRAM):定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠,无差错,它使用数据报协议(UDP). 3.原始套接字(SOCK_RAW):直接基于IP协议. 网络地址 struct sockaddr用于记录网络地址: struct sockaddr { u_s

[转] - Linux网络编程 -- 网络知识介绍

(一)Linux网络编程--网络知识介绍 Linux网络编程--网络知识介绍客户端和服务端         网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端. 客户端        在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序. 比如我们使用ftp程序从另外一        个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地方我们的ftp程序就是客户端程序. 服务端        和客户端相

网络爬虫(网络蜘蛛)之网页抓取

现在有越来越多的人热衷于做网络爬虫(网络蜘蛛),也有越来越多的地方需要网络爬虫,比如搜索引擎.资讯采集.舆情监测等等,诸如此类.网络爬虫涉及到的技术(算法/策略)广而复杂,如网页获取.网页跟踪.网页分析.网页搜索.网页评级和结构/非结构化数据抽取以及后期更细粒度的数据挖掘等方方面面,对于新手来说,不是一朝一夕便能完全掌握且熟练应用的,对于作者来说,更无法在一篇文章内就将其说清楚.因此在本篇文章中,我们仅将视线聚焦在网络爬虫的最基础技术--网页抓取方面. 说到网页抓取,往往有两个点是不得不说的,首

伪基站,卒于5G——本质上是基于网络和UE辅助的伪基站检测,就是将相邻基站的CI、信号强度等信息通过测量报告上报给网络,网络结合网络拓扑、配置信息等相关数据,对所有数据进行综合分析,确认在某个区域中是否存在伪基站

伪基站,卒于5G from:https://www.huxiu.com/article/251252.html?h_s=h8 2018-07-05 21:58收藏27评论6社交通讯 本文来自微信公众号:网优雇佣军(hr_opt),虎嗅获授权发表,题图来自:pixabay.com. 伪基站是2G时代的产物,通过伪装运营商的基站,向用户手机发送广告推销.诈骗.钓鱼网站等信息,侵犯公民隐私,危害人身财产安全,扰乱社会秩序. 2G时代,由于GSM只有单向鉴权加密,手机无法确认网络的合法性,导致伪基站有机

python 网络篇(网络编程)

一.楔子 你现在已经学会了写python代码,假如你写了两个python文件a.py和b.py,分别去运行,你就会发现,这两个python的文件分别运行的很好.但是如果这两个程序之间想要传递一个数据,你要怎么做呢? 这个问题以你现在的知识就可以解决了,我们可以创建一个文件,把a.py想要传递的内容写到文件中,然后b.py从这个文件中读取内容就可以了. 但是当你的a.py和b.py分别在不同电脑上的时候,你要怎么办呢? 类似的机制有计算机网盘,qq等等.我们可以在我们的电脑上和别人聊天,可以在自己

网络编程—网络基础概览、socket,TCP/UDP协议

网络基础概览 socket概览 socket模块-TCP/UDP的实现 TCP/UDP总结 网络基础概览 osi七层协议各层主要的协议 # 物理层传输电信号1010101010 # 数据链路层,以太网协议,arp协议.对这些信号进行分组,同时规范了分组形式--以太网协议,头部是mac地址中间是信息, # 网络层:ip协议,arp协议帮忙找到mac地址,ip,子网掩码,网关(下面有一些简单概括) # 传输层:tcp协议,udp协议 # (socket)就是一组接口,将复杂的tcp协议和udp协议隐