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. asp.net_MVC_jq三级联动

    数据库结构 建立三张表,Association,Team,Player 关系如下: 建立asp.net MVC 3项目,在HomeController.cs中利用Linq to SQL获取数据 首先实 ...

  2. C#学习笔记9:C#中的变量、转义符、显式转换和隐式转换

    1.变量的特性:可以重复的赋值 int a=4;  a=9; 2.常量:const int  number=10:这个常量不可变 如果你声明的变量,不想被其他人修改,那么就修饰为常量 声明在类的下面, ...

  3. WCF编程系列(六)以编程方式配置终结点

    WCF编程系列(六)以编程方式配置终结点   示例一中我们的宿主程序非常简单:只是简单的实例化了一个ServiceHost对象,然后调用open方法来启动服务.而关于终结点的配置我们都是通过配置文件来 ...

  4. YYKit之YYModel

    原文:http://www.cnblogs.com/lujianwenance/p/5706548.html    本文主要是对YYModel文件结构的简单分析,能帮助你更快的熟悉和学习YYModel ...

  5. MVC开发 好的扩展套件(Visual Studio 插件)

     

  6. myeclipse-8.6.0下载

    myeclipse老版本不分32位和64位,欢迎大家下载使用! 链接:http://pan.baidu.com/s/1dEJCxcl 密码:z1ga

  7. 09_httpclient测试SOAP协议

    [工程截图]注意:无需使用Wsimport生成客户端代码 [HttpClient.java] import java.io.ByteArrayOutputStream; import java.io. ...

  8. JAVA时钟

    效果图如下: //简单动态时钟程序,以图形和数字两种方式来显示当前时间 import javax.swing.*; import java.awt.event.*; import java.awt.* ...

  9. 通过 ANE(Adobe Native Extension) 启动Andriod服务 推送消息(二)

    着手改造之前,有兴趣可以阅读下官方文档:http://help.adobe.com/zh_CN/air/extensions/index.html 新建工程 NavService 并创建包 nav.w ...

  10. [可拖动DIV]刚开通博客顺便就写了点东西!

    说说我自己的思路 首先需要一个初始div div { border: 1px #333 solid; width: 200px; height: 50px; } <div id="od ...