//
// ViewController.m
// NSURLSession
//
// Created by long on 15/9/11.
// Copyright (c) 2015年 WLong. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@property(nonatomic,retain)NSMutableData *receiveData;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
}
//所有类型的task都要调用resume方法才会开始请求
- (IBAction)BlockButton:(id)sender {
//快捷方式获得session对象
NSURLSession *session = [NSURLSession sharedSession];
NSURL *url = [NSURL URLWithString:@"http://mobile.ximalaya.com/m/explore_album_list?category_name=all&condition=hot&device=android&page=1&per_page=20&status=0&tag_name=%E5%8D%81%E4%BA%8C%E6%98%9F%E5%BA%A7"];
//通过URL初始化task 在block内部可以直接对返回的数据进行处理
NSURLSessionTask *task = [session dataTaskWithURL:url completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSLog(@"-----%@",[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]);
NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"result = %@",result);
}];
//启动任务
[task resume];
}
//NSURLSessionDataDelegate代理方法
//NSURLSession提供了block方式处理返回数据的简便方式,但如果想要在接收数据过程中做进一步的处理,仍然可以调用相关的协议方法.NSURLSession的代理方法和NSURLConnection有些类似,都是分为接收响应、接收数据、请求完成几个阶段.
- (IBAction)DelegateButton:(id)sender {
//使用代理方法我们需要设置代理,但是session得delegate属性是只读的,要想设置代理只能通过这种方式创建session
NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:[[NSOperationQueue alloc] init]];
//创建任务(因为要使用代理方法,就不需要block方式初始化)
NSURLSessionDataTask *task = [session dataTaskWithRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20131129&startRecord=1&len=15&udid=1234567890&terminalType=Iphone&cid=213"]]];
//启动任务
[task resume];
}
//代理方法:
//1.接收服务器响应
-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveResponse:(NSURLResponse *)response completionHandler:(void (^)(NSURLSessionResponseDisposition))completionHandler
{
//允许处理服务器的响应,才会继续接收服务器返回的数据,NSURLSession在接收到响应的时候要先对响应做允许处理:completionHandler(NSURLSessionResponseAllow);,才会继续接收服务器返回的数据,进入后面的代理方法
completionHandler(NSURLSessionResponseAllow);
//当网络请求是基于http协议时(url以http开头),response本质就是NSHTTPURLResponse类型的
NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
NSLog(@"status code = %ld",httpResponse.statusCode);
NSLog(@"all header fields = %@",httpResponse.allHeaderFields);
//创建空的可变的data,准备接收服务器传回的data片段
self.receiveData = [NSMutableData dataWithCapacity:40];
}
//2.接收服务器的数据(可能调用多次)
-(void)URLSession:(NSURLSession *)session dataTask:(NSURLSessionDataTask *)dataTask didReceiveData:(NSData *)data
{
//处理每次接收的数据
//将每次接收到得data片段,拼接到receiveData中
[_receiveData appendData:data];
}
//3.请求成功或者失败(如果失败 error有值)
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error
{
//请求完成,成功或者失败的处理
NSString *result = [[NSString alloc] initWithData:_receiveData encoding:NSUTF8StringEncoding];
NSLog(@"result = %@",result);
}
- (IBAction)GetButton:(id)sender {
}
//POST和GET的区别就在于request,所以使用session的POST请求和GET过程是一样的,区别就在于对request的处理.
- (IBAction)PostButton:(id)sender {
NSURL *url= [NSURL URLWithString:@"http://ipad-bjwb.bjd.com.cn/DigitalPublication/publish/Handler/APINewsList.ashx?date=20131129&startRecord=1&len=15&udid=1234567890&terminalType=Iphone&cid=213"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
request.HTTPBody = [@"username=daka&pwd=123" dataUsingEncoding:NSUTF8StringEncoding];
NSURLSession *session = [NSURLSession sharedSession];
//由于要先对request先进行处理,我们通过request初始化task
NSURLSessionTask *task = [session dataTaskWithRequest:request completionHandler:^(NSData *data, NSURLResponse *response, NSError *error) {
NSLog(@"%@",[NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]);
NSString *result = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];
NSLog(@"result = %@",result);
}];
//启动任务
[task resume];
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
相关推荐
iOS疯狂详解之SQlite数据库增删改查
// // SqLiteManager.h // MySqlite // // Created by long on 15/9/15. // Copyright (c) 2015年 WLong. All rights reserved. // #import #import "LanOuStudent.h" #import @interface SqLiteManager : NSO
iOS NSURLSession的简单使用
一.为什么要使用NSURLSession来替换NSURLConnection 1.在iOS9.0之后,以前使用的NSURLConnection过期,苹果推荐使用NSURLSession来替换NSURLConnection完成网路请求相关操作。 2.NSURLSession的优势: NSURLSession支持http2.0协议 处理下载任务的时候可以直接把数据下载到磁盘中 支持后台下载和上传 同一个session发送多次请求,只需要建立一次连接(复用了TCP) 提供了全局的session并且可以统一配置,
PCB布局布线要求及多层电路板叠加原则
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考本文主要针对PCB布局布线中的要点进行了总结,并对多层电路板的叠加原则进行了解释。
【iOS】使用NSURLSession网络请求
文章目录前言NSURLSessionNSURLSession替换NSURLConnectionGet请求流程1. 确定请求路径2. 创建请求对象3. 获得会话对象3. 根据会话对象创建一个Task(发送请求)5. 解析服务器返回的数据6. 执行任务Post请求流程修改请求方法为POST设置请求体Get与Post请求比较info.plist文件配置遇到的问题 前言 最近写项目开始和后台对接了,测试接口需要用到网络请求相关知识,才能和后台进行交互。 暂时学习了使用NSURLSession(现在流行的苹果网络框
在ZYNQMP上点亮800x480 LCD屏:从framebuffer到DRM框架的完整驱动移植实战
本文详细介绍了在ZYNQMP平台上点亮800x480 LCD屏的完整驱动移植实战,从framebuffer到DRM框架的技术实现。内容涵盖硬件配置、设备树设置、显示时序参数调试以及DRM驱动核心实现,帮助开发者快速掌握PetaLinux系统中的LCD驱动开发技巧。
MATLAB 设置legend加标题
x1 = linspace(0,5); y1 = sin(x1/2); plot(x1,y1) hold on x2 = [0 1 2 3 4 5]; y2 = [0.2 0.3 0.6 1 0.7 0.6]; scatter(x2,y2,'filled') hold off legend({'sin(x/2)','2016'},'Location','northwest','Orientation','horizontal')%水平 legend添加标题 lgd = legend; lgd.Fon
iOS 使用 NSURLSession 常用的提交数据的方式
#import <Foundation/Foundation.h> dispatch_semaphore_t sema = dispatch_semaphore_create(0); NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"https://i...
2025软考信息安全工程师真题
2025信息安全工程师软考真题
IOS网络基础学习二:NSURLSession发送GET与POST请求,DataTask代理方法
文章目录使用步骤GET 使用步骤 1.创建NSURLSession的会话 2.根据会话创建Task 3.执行Task Task的类型 NSURLSessionTask是一个抽象类,我们无法直接运用到它,运用到的是它的三个子类。 如何获取NSURLSession? 1.获得共享的Session +(NSURLSession*)sharedSession; 2.自定义的Session +(NSURL...
计算机网络(国家电网)
1.局域网中NOS(网络操作系统)提供的通信服务有工作站与工作站之间的对等通信,工作站与服务器之间的通信2.ISP:Internet服务商应用层 APDU(应用层协议数据单元)表示层 PPDU(表示层协议数据单元)会话层 SPDU(会话层协议数据单元)传输层 segment(报文段)网络层 packet (数据包)数据链路层 frame(数据帧)物理层 bit (比特)4.
Claude Code 处理长任务 + Cursor 专注交互:双栈协作的 3 种分工场景与响应提速 35% 实测
揭示 Claude Code 与 Cursor 在 AI 编程中的本质分工:Claude Code 作为离线式架构师处理跨文件、带约束的长链路重构(如单体拆微服务),Cursor 作为现场交互工程师专注秒级局部编辑;提出按任务切片动态切换的三种工程化协作场景,并给出结构化上下文构建、约束型 Prom
iOS网络编程—NSURLSession的简单使用(iOS9)
摘要: 在iOS7之后,NSURLSession被作为推荐使用的网络开发框架,其相比NSURLConnection最大的优势在于其后台处理的能力。一、NSURLSession简介在iOS7之后,NSURLSession作为系统推荐使用的HTTP请求框架,在进行前台请求的情况下,NSURLSession与NSURLConnection并无太大差异,对于后台的请求,NSURLSession更加灵活的优势
TVBox源总失效?不如自己搭建一个!告别不稳定!手把手教你自建TVBox源,全网资源尽掌握!
🚀 TVBox源总失效?别慌!手把手教你自建TVBox源,打造一个稳定、海量、无广告的影视宝库!从此告别片荒,尽享丝滑观影体验!
华山论剑之浅谈iOS的文件下载,断点下载(基于NSURLSession的网络请求)
疯狂的程序员决不是靠狂妄和拼命的程序员,而是能够脚踏实地,持续努力的程序员,一个程序员真正做到这两点,技术上去后,唯一能限制他的只有想象力,到那个时候才算“疯狂的程序员”,这种程序员,才能令对手无比恐惧。 前言 上面的一张水域小镇风景图是那么的美丽,美丽的东西总是令人向往.现在我想它从网上下载下来当我的手机桌面的背景图,那么该怎么办?如果图片的很小,我们该如何做,如果图片过大我们又该如何处理呢?或者说是当我们需要下载一个几百兆的文件的时候,我们改如何处理呢? ####文件的一次性下载 做应用程.
MIPI D-PHY TX 一致性测试实例解析 Part 03
本文之前,已经讨论了MIPI D-PHY TX的1.3.x和1.4.x的测试项,1.5.x的测试项相对较少,主要是用于时钟和数据通道相关的时序测量
Statistics and Machine Learning Toolbox
Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具
从欢聚时代iOS校招C卷看Objective-C与Runtime核心考点
在iOS开发中,Objective-C和Runtime是绕不开的底层基石,更是校招与社招面试中高频考察的技术栈。理解内存管理、引用计数、消息转发与RunLoop机制,不仅有助于分析属性关键字、block循环引用等经典问题,也能为多线程并发和性能优化提供扎实的理论支撑。从直播、IM等高实时互动场景到列表流畅度优化,这些原理始终贯穿于工程实践。本文通过复盘一份2017年欢聚时代iOS工程师校招笔试卷,梳理其题型结构与出题逻辑,提炼出依然适用于当今面试的常青知识点,帮助开发者建立系统化的底层认知,从而在技术面试与
IEM模型,地表粗糙度模拟
利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟
IOS网络开发NSURLSession详解(一)概述
原创blog,转载请注明出处blog.youkuaiyun.com/hello_hwc 我的IOS-SDK详解专栏,欢迎关注 http://blog.youkuaiyun.com/column/details/huangwenchen-ios-sdk.html前言: 这个IOS网络编程的系列计划6篇文章,NSURLSession3篇(一篇概述,一篇详细阐述三种task和delegate的使用,一篇阐述授权,证书等内
精雕软件(JDpaint) 5.5 绿色版
精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版
iOS—NSURLSession简单使用
文章目录NSURLSession使用 NSURLSession,苹果对它的定位是作为NSURLConnection的替代者 NSURLSession只提供了异步请求方式而没有提供同步请求方式 NSURLSession使用
NSURLSession简介(NSURLSession使用说明及后台工作流程分析)
NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的。在程序在前台时,NSURLSession与NSURLConnection可以互为替代工作。注意,如果用户强制将程序关闭,NSURLSession会断掉。 NSURLSession提供的功能: 1.通过URL将数据下载到内存 2.通过URL将数据下载到文件系统 3
获取当前时间警告eprecated in iOS 9.0 - Use [NSURLSession dataTaskWithRequest:completionHandler:] (see NSURLS
//警告 NSUInteger unitFlags = kCFCalendarUnitYear | kCFCalendarUnitMonth | kCFCalendarUnitDay | kCFCalendarUnitHour | kCFCalendarUnitMinute | kCFCalendarUnitSecond; //替换 NSUIntege
iOS网络(四):NSURLSession的使用,断点下载,离线断点续传,上传文件
NSURLSession 使用步骤 使用NSURLSession对象创建Task,然后执行Task Task的类型 NSURLSession的基本使用步骤代码: #import "ViewController.h" @interface ViewController () @end @implementation ViewController -(void)to...
使用NSURLSessionDataTask发送get和post请求
NSURLSessionDataTask是iOS7以后才会有的,取代NSURLConnection 参考:http://blog.youkuaiyun.com/ttf1993/article/details/46491113 1.基本使用 //GET请求(默认) //创建session对象 NSURLSession *session = [NSURLSession sharedSess
【iOS开发-网络】使用NSURLSessionDataTask发送get和post请求
NSURLSessionDataTask是iOS7以后才会有的,是苹果为取代NSURLConnection所出get请求//得到session对象 NSURLSession *session = [NSURLSession sharedSession]; NSURL *url = [NSURL URLWithString:@"http://localhost:8080/TFServer/video"
iOS网络--NSURLSession基本使用(1)
一、NSURLSession NSURLSession是苹果对网络会话的封装,可以完全替代原来的NSURLConnection。相比于NSURLConnection,NSURLSession具备以下优势: 支持http2.0协议 在处理下载任务的时候可以将下载内容写入磁盘(NSURLSessionDownloadTask) 支持后台下载/上传 同一个NSURLSession可以发送多个请...
iOS疯狂详解之开源库
youtube下载神器:https://github.com/rg3/youtube-dl vim插件:https://github.com/Valloric/YouCompleteMe vim插件配置:https://github.com/spf13/spf13-vim ----------------Mac完整项目---------- 电台:https://github.com
iOS疯狂详解之设备前后摄像头切换
#import // Switching between front and back cameras - (AVCaptureDevice *)cameraWithPosition:(AVCaptureDevicePosition)position { NSArray *devices = [AVCaptureDevice devicesWithMediaType:AVMedi
5930



被折叠的 条评论
为什么被折叠?



