网络编程(一) 利用NSURLSession发送GET POST请求
Xcode 7.0后,http链接不能直接访问(https可以),需要在Info.plist增加下面一项才能正确访问。
使用NSURLSession进行网络请求的流程:
1.构造NSURL
2.构造NSURLRequest请求对象
3.构造NSURLSession会话对象
4.创建网络请求任务:dataTask, downloadTask, uploadTask
5.发送网络请求
1.GET 请求(GET一般用于获取/查询资源信息)
- (void)HTTPGET
{
//1.构造NSURL
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"];
//2.构造NSURLRequest请求对象
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
//对请求对象进行设置
request.URL = url;
request.HTTPMethod = @"GET";
//3.构造NSURLSession会话对象
NSURLSession *session = [NSURLSession sharedSession];
//4.创建dataTask网络请求任务(请求任务有3种dataTask, downloadTask, uploadTask)
/*
(1)completionHandler:是网络请求完成后会回调的block
(2)response代表响应对象,可以由它获取当前响应的状态,响应头数据
(3)data代表服务器传输的数据,即响应体的内容
(4)error代表请求过程中出现错误,可以用它进行调试。
*/
NSURLSessionDataTask *dataTask = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
//打印响应状态码,200表示请求成功,其他百度一下HTTP响应状态码对照看就可以了
NSLog(@"响应状态码 = %ld",HTTPResponse.statusCode); //这里返回的是json数据,对响应数据进行json解析
id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:nil];
NSLog(@"接收到的数据:%@",result); }]; //5.开始发送网络请求或者是继续之前挂起的网络请求任务
[dataTask resume]; }
2.POST请求(POST一般用于更新资源信息,也有很多情况是获取指定信息,需要在请求体里添加相应内容)
- (void)HTTPPOST
{
//1.构造NSURL
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"];
//2.构造NSURLRequest请求对象
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
request.URL = url;
request.HTTPMethod = @"POST"; NSString *bodyString = @"cinema_id=1533";
request.HTTPBody = [bodyString dataUsingEncoding:NSUTF8StringEncoding];
//3.构造NSURLSession会话对象(单例)
NSURLSession *session = [NSURLSession sharedSession];
//4.创建dataTask网络请求任务
NSURLSessionDataTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
//打印响应状态码,200表示请求成功,其他百度一下HTTP响应状态码对照看就可以了
NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)response;
NSLog(@"响应状态码 = %ld",HTTPResponse.statusCode);
//获取响应体数据,进行JSON解析
NSError *jsonError = nil;
id result = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError];
NSLog(@"%@", result);
}]; [task resume];
}
打印结果
网络编程(一) 利用NSURLSession发送GET POST请求的更多相关文章
- swift开发网络篇—利用NSURLSession 发送GET和POST请求
说明:本文示例代码发送的请求均为http请求,需要对info.plist文件进行配置.如何配置,请参考https://github.com/HanGangAndHanMeimei/iOS9Adapta ...
- [转]C#网络编程(订立协议和发送文件) - Part.4
本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part4.aspx 源码下载:http://www.trac ...
- Java 网络编程 字符流的发送与接收 自定义数据边界
在网络编程中,客户端调用了flush方法,就会将缓存在字符流中的文本发送给服务器,服务器该怎样判断客户端发送的文本已经结束了呢? 我们先看一个例子: 客户端: import java.io.IOExc ...
- C# 网络编程之基于SMTP发送电子邮件
本文主要讲述基于C#网络编程的发送邮件的编程,邮件发送功能是基于邮件协议的,常见的电子邮件协议有SMTP(简单邮件传输协议).POP3(邮局协议).IMAP(Internet邮件访问协议),文章主要 ...
- Java网络编程:QQ邮件发送客户端程序设计
目录 一.目标介绍 1.认识SMTP(邮件传输协议) 2.POP3(邮件接收协议) 二.基于Base64编码邮箱及授权码 1.开通QQ邮箱SMTP/POP3服务 2.Java编写BASE64编码程序 ...
- 利用 socket 发送 get/post 请求
思路:利用 fsockopen 函数与要请求的主机建立一个通信通道,再将请求行.头信息.主体信息通过这个通道传输给主机实现请求的发送.利用这种方式发送 get 请求就是常说的小偷程序,发送 post ...
- Java网络编程:利用Java mail包发送电子邮件
下面代码是利用Java mail包封装了一个发送邮件的类 import java.io.File; import java.util.ArrayList; import java.util.Date; ...
- 【Python网络编程】利用Python进行TCP、UDP套接字编程
之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...
- iOS开发之网络编程--1、NSURLSession的基本使用
前言:学习NSURLSession的使用之前,先学习一篇关于NSURLSession的好文章<From NSURLConnection to NSURLSession>或者是国内的译文&l ...
随机推荐
- redhat6.5 配置使用centos的yum源
新安装了redhat6.5安装后,登录系统,使用yum update 更新系统.提示: This system is not registered to Red Hat Subscription Ma ...
- 如何入侵Linux操作系统
我发现了一个网站,于是常规入侵.很好,它的FINGER开着,于是我编了一个SHELL,aaa帐号试到zzz(by the way,这是我发现的一个网上规律,那就是帐号的长度与口令的强度成正比, 如果一 ...
- cocos2d-x实战 C++卷 学习笔记--第5章 精灵
前言: 精灵类是Sprite类.它的子类有PhysicsSprite 和 Skin. PhysicsSprite 是物理引擎精灵类,而Skin是皮肤精灵类,用于骨骼动画. 创建Sprite精灵对象 创 ...
- 第六篇、git常用的命令
1.oscine git服务器地址 https://git.oschina.net/ 2.帐号:18775134221@163.com 密码:562011 3.创建私有的仓库 4.使用命令 4.1 配 ...
- OpenJudge 2738 浮点数加法
1.链接地址: http://bailian.openjudge.cn/practice/2738 2.题目: 总时间限制: 1000ms 内存限制: 65536kB 描述 求2个浮点数相加的和 题目 ...
- JS 版的pnp in_array($str,$arr)
var a = Array(1,2,3,4,5); function in_array(search,array){ for(var i in array){ if(array[i]==search) ...
- Linux与Windows的桥梁--共享目录
1.关闭防火墙和selinux # service iptables stop # chkconfig --level 2345 iptables off ...
- log4net 总结
说实话,我并不是太想写这篇文章,因为我承诺过要完成博客园的部分功能,所以一直都在积极的利用下班时间来完善这个系统, 但是我又不想让看我源代码的朋友不知道我写的代码是什么意思,所以我还是单独写一个文章, ...
- tar解压去除文件夹
tar zxvf test.tar.gz --strip-components 1 解压到当前目录,并去除一级目录
- putty实现自动登录的方法(ssh和ssh2)
介绍putty实现自动登录的方法. 1.登录主机并输入ssh-keygen -t rsa 提示Enter file in which to save the key (/root/.ssh/id ...