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请求的更多相关文章

  1. swift开发网络篇—利用NSURLSession 发送GET和POST请求

    说明:本文示例代码发送的请求均为http请求,需要对info.plist文件进行配置.如何配置,请参考https://github.com/HanGangAndHanMeimei/iOS9Adapta ...

  2. [转]C#网络编程(订立协议和发送文件) - Part.4

    本文转自:http://www.tracefact.net/CSharp-Programming/Network-Programming-Part4.aspx 源码下载:http://www.trac ...

  3. Java 网络编程 字符流的发送与接收 自定义数据边界

    在网络编程中,客户端调用了flush方法,就会将缓存在字符流中的文本发送给服务器,服务器该怎样判断客户端发送的文本已经结束了呢? 我们先看一个例子: 客户端: import java.io.IOExc ...

  4. C# 网络编程之基于SMTP发送电子邮件

     本文主要讲述基于C#网络编程的发送邮件的编程,邮件发送功能是基于邮件协议的,常见的电子邮件协议有SMTP(简单邮件传输协议).POP3(邮局协议).IMAP(Internet邮件访问协议),文章主要 ...

  5. Java网络编程:QQ邮件发送客户端程序设计

    目录 一.目标介绍 1.认识SMTP(邮件传输协议) 2.POP3(邮件接收协议) 二.基于Base64编码邮箱及授权码 1.开通QQ邮箱SMTP/POP3服务 2.Java编写BASE64编码程序 ...

  6. 利用 socket 发送 get/post 请求

    思路:利用 fsockopen 函数与要请求的主机建立一个通信通道,再将请求行.头信息.主体信息通过这个通道传输给主机实现请求的发送.利用这种方式发送 get 请求就是常说的小偷程序,发送 post ...

  7. Java网络编程:利用Java mail包发送电子邮件

    下面代码是利用Java mail包封装了一个发送邮件的类 import java.io.File; import java.util.ArrayList; import java.util.Date; ...

  8. 【Python网络编程】利用Python进行TCP、UDP套接字编程

    之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验. 流程如下: 1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接 ...

  9. iOS开发之网络编程--1、NSURLSession的基本使用

    前言:学习NSURLSession的使用之前,先学习一篇关于NSURLSession的好文章<From NSURLConnection to NSURLSession>或者是国内的译文&l ...

随机推荐

  1. CSS3选择器使用小结

    CSS3 选择器小结 一 通用选择器 1  *{}通配选择符(CSS2):适合所有元素对象. 2  E类型(HTML)选择符(CSS1):以文档语言对象类型DOM作为选择符. 3  E#myid是id ...

  2. JavaScript设计模式(一)

    使用JavaScript框架和库过程中, 我遇到过很多感觉上'奇形怪状'的代码. 大多数情况下, 按照惯例编写代码也能够写出很多出色的功能. 但是如果不从根本上理解它们实现的方法, 就没办法完全充分发 ...

  3. xml复习

    一.XML概述 1.XML是可扩展标记语言.是由W3C指定并维护的,目前最新的版本是1.0 2.XML作用: 2.1传输数据,它是一种通用的数据交换格式 2.2配置文件. 二.xml语法 1.XML的 ...

  4. Android之Http网络编程(一)

    Android应用作为一个客户端程序绝大部分都是需要进行网络请求和访问的,而http通信是一种比较常见并常用的通信方式. 在Android中http网络编程中有两种实现方式,一种是使用HttpURLC ...

  5. procedure的over(partition by ) function

    转载自:http://www.2cto.com/database/201310/249722.html oracle的分析函数over(Partition by...)   Sql代码       o ...

  6. C# 数据类型映射 (SQLite,MySQL,MSSQL,Oracle)

    一.C# vs SQLite: C# SQLite 字段名 类型 库类型 GetFieldType(#) 转换 备注 F_BOOL bool BIT NOT NULL Boolean F_BOOL_N ...

  7. Spring MVC中Ajax实现二级联动

    今天写项目遇到了二级联动,期间遇到点问题,写个博客记录一下. 后台Controller: @RequestMapping("/faultType") @ResponseBody p ...

  8. linux修改时间 时区

    查看时区:date -R 修改时区  cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 二.时间 1.查看时间和日期 date 2.设置时间和日期 ...

  9. 关于NPC和NP-Hard问题

    参考链接: 1. P.NP.NPC和NP-hard问题的理解 参考:<算法导论>

  10. mysqldump备份与还原mysql数据的实例

    有关mysql数据库的备份与还原,我们一般用下面两种方式来处理:1.使用into outfile 和 load data infile导入导出备份数据 本文原始链接:http://www.jbxue. ...