网络编程(一) 利用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 ...
随机推荐
- TortoiseGit记住用户名和密码
1.将项目从服务器Clone下来 2.然后在Repository上右键,打开设置 3.选择凭证 4.为当前Repository创建一个凭证,然后确定退出即可 5.然后再pull下,会直接提示你输入密码 ...
- php入门实现留言板
首先由一个文本文档read.txt liulan.html <!doctype html> <html lang="en"> <head> &l ...
- Unity3D 之连按移动加速
上代码: 效果是连续按W后,加速移动 为物体添加个拖拽效果,方便看运动轨迹. 将下面的脚本绑定到移动的物体上. 不过这里有一点很重要的需要去注意就是该方法不能放在 void FixedUpdate() ...
- 【高级JEE技术】JMX
JMX即Java Manager Extentin(java 管理扩展)一种动态改变javabean属性值的技术,具体应用场景可以有很多.比如使用JMX作为线上应用的开关,在做一些新老系统改造的时候 ...
- C#.net在后台执行javascript
string script = string.Format("<script type='text/javascript' >alert('{0}');</script&g ...
- C/C++雷区之内存管理
C++雷区之内存管理 伟大的Bill Gates 曾经失言: 640K ought to be enough for everybody — Bill Gates 1981 程序员们经常编写内存管理程 ...
- JD(转载)
时间:2012-9-11 地点:川大 我只能说第一家公司,不是一般的火爆.不得不吐槽一下: 京东宣讲完全没有计划,只看到个下午两点半宣讲,结果跑过去,下午两点是宣讲管培的.在川大外的德克士呆了一下午. ...
- 启发式搜索 A*算法的OC 实现
前两天重新学习了下A*算法,上次学习A*算法已经是5年前了,看到网上铺天盖地的A*算法都是C.C++等等其他语言的,就是没有OC 的,所以抽空写了一份.今天太晚了就不说明A*算法的细节了,大家如果想学 ...
- javascript 事件 第23节
<html> <head> <title>DOM对象</title> <style type="text/css"> t ...
- CSS高度塌陷
问题描述:当父元素只包含浮动的元素的时候,且父元素没有设置高度,如果父元素设置了边框border,那么看起来子元素不在父元素之内. 比如这样: html: <div id="paren ...