---- 这是这个关于NSURLSession的第二篇文章,第一篇再加上这篇文章,就大概的把NSURLSession的API以及一些简单使用我们也就说的差不多了,这篇文章总结哪些点呢?...这种方法在两种情况下被调用: 1、远程服务器请求客户端证书或Windows NT LAN Manager(NTLM)身份验证时,允许您的应用程序提供适当的凭据 2、当会话首先建立与使用SSL或TLS...的远程服务器的连接时,允许您的应用程序验证服务器的证书链 如果您未实现此方法,则会话会调用其委托的URLSession:task:didReceiveChallenge:completionHandler...- (void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session API_AVAILABLE(ios(7.0...还有前面关于API的注释也是在写URLSessionManager.h文件中,需要的可以翻翻去看看,关于NSURLSession暂时就先说这么多,有问题可以加我QQ 1872684219 Demo
- (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge...当某个session使用SSL/TLS协议,第一次和服务器端建立连接的时候,服务器会发送给iOS客户端一个证书,此方法允许你的app验证服务期端的证书链(certificate keychain)注:如果你没有实现该方法...---- 3. - (void)URLSessionDidFinishEventsForBackgroundURLSession:(NSURLSession *)session 先看一下系统的API。...*)session API_AVAILABLE(ios(7.0), watchos(2.0), tvos(9.0)) API_UNAVAILABLE(macos); 下面看一下AFN中的实现 @property...在iOS中,当一个后台传输任务完成或者后台传输时需要证书,而此时你的app正在后台挂起,那么你的app在后台会自动重新启动运行,并且这个app的UIApplicationDelegate会发送一个application
这个问题的讨论最初来自公司内部邮件,我只是把这个问题的讨论内容记录下来。...有一些项目组在定位问题的时候发现,在使用 “for(x in array)” 这样的写法的时候,在 IE 浏览器下,x 出现了非预期的值。...如果自定义了 Array.prototype.indexOf 方法(譬如源于某 prototype 污染),也许是因为老版本 IE 浏览器并不支持 array.indexOf 方法,而开发者又很想用,那么这样的浏览器可能会出现这样的问题...的循环时的问题,因为 JavaScript 没有代码块级别的变量,所以这里的 i 的访问权限其实是所在的方法。...使用 JavaScript 1.7 中引入的 “let”可以解决这个问题,使 i 成为真正的代码块级别的变量: for(let i =0; i < a.length; i++) 最后,在 Google
回顾 上一篇主要讲了NSURLSessionDelegate中的三个代理方法,讲述了它们的使用场景以及用法,这一篇主要讲AFURLSessionManager中代理NSURLSessionTaskDelegate...补充一点,初始化NSURLSession对象的时候需要使用NSURLSessionConfiguration。...- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge:(NSURLAuthenticationChallenge...- (void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didReceiveChallenge...后记 本篇主要介绍了NSURLSessionTaskDelegate中五个代理方法的实现及其使用场景和注意事项。
本文收集整理使用 Xamarin 开发 iOS 应用时可能会遇到的各种问题。...Could not find any available provisioning profiles for iOS 这个错误可能出现在你是用 Visual Studio 或者 Visual Studio...for Mac 部署真机调试的时候出现。...所以,如果你希望只使用 Visual Studio 或者 Visual Studio For Mac 或者 Xamarin 来部署是不可能的。...如果出现了此错误,你需要使用 XCode 提前生成一份 provisioning profiles 然后在 Visual Studio 中使用这份 profiles。
AFNetworking简单介绍 通过前面学习的HTTP协议的基本知识,GET/POST请求的区别,NSURLConnection 和 NSURLSession的使用,已经基本了解了网络请求的方法,但是相对使用比较麻烦...= [NSSet setWithObject:@"text/html"]; 也可以直接在AFN源码中添加(不建议使用,这种方式比较隐蔽,当更新过AFN之后这里会还原,出现问题比较难找) ?...当使用NSURLSession来向HTTPS发送请求时,需要在NSURLSessionDataDelegate的代理方法didReceiveChallenge中,信任服务器并且创建证书返回服务器。...AFN内部封装的方法 那么当我们用NSURLSession向HTTPS发送请求的时候,直接复制过来稍作修改就可以用啦 -(void)URLSession:(NSURLSession *)session...---- 关于网络请求的基础知识请参考iOS-网络编程(一)HTTP协议、iOS-网络编程(二)文件上传和断点离线下载。
,你掌握了NSURLSession对于iOS网络处理理解的就会有点深度了,而不是停留在AF的层面,理解了NSURLSession再去看AFNetWorking的源码会有很大的帮助。 ...最后再通过最后面一个Demo,把NSURLSession的一些日常中的使用再过一遍,包括你经常会听到的后台下载、断点下载、断点续传等等都有代码介绍。 ...获取是否允许使用服务商蜂窝网络 */ @property (readonly) BOOL allowsCellularAccess API_AVAILABLE(macos(10.8), ios(6.0...设置的请求时是否按顺序收发 默认禁用 在某些服务器中设为YES可以提高网络性能 */ @property (readonly) BOOL HTTPShouldUsePipelining API_AVAILABLE...接着我们说我们要理解的重点--NSURLSession,下面的内容是按照NSURLSession.h API来写的,你可以对比着来看。
你要知道的NSURLSession都在这里 转载请注明出处 https://cloud.tencent.com/developer/user/1605429 本系列文章主要讲解iOS中网络请求类NSURLSession...iOS网络——NSURLSession详解及SDWebImage源码解析 iOS网络——SDWebImage SDImageDownloader源码解析 iOS网络——AFNetworking AFURLSessionManager...是如何自定义NSOperation子类以及如何使用NSURLSession实现下载的,本文将会讲解SDWebImageDownloader类,来探索SDWebImage如何实现多线程下载多张图片的。...源码中值得我们学习的地方有很多,比如,在设计第三方库时要设计全面的通知,为了防止竞争条件可以使用一个串行队列或是barrier方法来执行一些可能会产生多线程异常的代码,还有很多设计代码的细节需要我们自行体会...备注 由于作者水平有限,难免出现纰漏,如有问题还请不吝赐教。
一是握手过程:用于客户端和服务器验证双方身份,协商后续数据传输时使用到的密钥等。二是数据传输过程:身份验证通过并协商好密钥后,通信双方使用协商好的密钥加密数据并进行通信。...在握手过程协商密钥时,使用的是非对称密钥交换算法, 密钥交换算法本身非常复杂,密钥交换过程涉及到随机数生成,模指数运算,空白补齐,加密,签名等操作。...无法找到锚点证书(即在证书链的顶端没有找到合法的根证书) 访问的server的dns地址和证书中的地址不同 三、iOS实现支持HTTPS 在OC中当使用NSURLConnection或NSURLSession...如下图所示: 针对非自签名证书验证实现 在接收到服务器返回的状态码为401的响应后,对于NSURLSession而言,需要代理对象实现URLSession:task:didReceiveChallenge...可以采取下述简单代码绕过HTTPS的验证: -(void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge
在vscode时新增proto文件时,按下sr会出现一个快捷生成CRUD服务的例子 srvcrud 然后再protoc生成时发现报如下错误: map/proto/service.proto:85:3:...protocolbuffers/protobuf/blob/master/src/google/protobuf/empty.proto 但下载这个库然后再protoc里加入proto_path后又发现报google.api.http...找不到的错。...,查看grpc-gateway网关的源码,发现在1.11.3版本后此方法被删除,怀疑是我本地版本过低的原因,但go install、go get好几次这个gateway的库也是这个错,无奈之下,只能手动在...go mod里面降级,不得不说,这里go mod的强大性就体现出来了,改个数字就能降级升级。
使用AFN请求网络一直好好的,无论是http,还是https都正常,突然有一天服务器那边不知道调整了什么(可能是服务器SSL证书到期),每次请求都是返回: Error Domain=NSURLErrorDomain...简书 因为一直使用的是正常申请的https证书,主要是现在用自建证书的公司越来越少了,除了部分个人为了玩。。。因为很多地方都提供免费的。。。...所以基本iOS端从http切换到https并不需要什么工作直接换就行。...但是如果出现了如上错误可以简单的设置APP端直接信任证书就好: 方法一、一般就是设置AFHTTPSessionManager的securityPolicy OC: AFHTTPSessionManager...AFHTTPSessionManager 那么也可以重写下面的方法来解决 OC: - (void)URLSession:(NSURLSession *)session didReceiveChallenge
的以下,创建session的时候,偶发的情况会出现session的属性taskIdentifier这个值不唯一,而这个taskIdentifier是我们后面来映射delegate的key,所以它必须是唯一的...所以不会存在循环引用的问题。...●加锁是因为本身这个字典属性是mutable的,是线程不安全的。而我们对这些方法的调用,确实是会在复杂的多线程环境中,后面会仔细提到线程问题。...屏幕快照 2018-11-23 14.15.46.png 接下来我们就讲讲这些代理方法做了什么(按照源码中的顺序) 代理1 //当前这个session已经失效时,该代理方法被调用。...代理2 // https认证 - (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge
我个人习惯项目运行的时候是debug模式跑着,但是,问题来了,启动竟然抛点异常。。。。。可是上周还好好的,让我有点怀疑人生了。...但是还有一个但是,我把日志模式改为info模式,这个贱贱的错误又隐藏起来了,项目一切正常运行,是没问题的。声明一点啊,这个错误不是跟日志的模式有关。 ...出现问题的根源,就是springmvc框架加载项目的时候,同时使用了加载静态资源的和定义了全局日期转换器。 1 转换到java.util.List的时候失败了。 【为什么会出现这个问题?...由于本人能力有限,还没有真正的了解到具体说法,如朋友你知底,请留言共勉,万分感谢】 但是出现问题我们必须以最快的速度干掉它,那么解决办法我给各位提供了2种(既然是不能用这种方式同时出现,那么我就只允许他们只出现一种
2.UIKit+AFNetworking文件下是实现图片下载的类 下面我们主要看AFNetworking的HTTP请求实现,我们使用AF发送一个请求很简单,如下面的一个GET请求的例子 // 请求管理器...首先我们来看一下NSURLSession的代理,它有4个代理,在创建时只要设置一个相当于4个都设置了 self.session = [NSURLSession sessionWithConfiguration...,这4个代理不一定都会走,它会根据Task的类型走,如DataTask才会走NSURLSessionDataDelegate,这里还有一个问题,就是当有多个任务同时进行时,我们不好区分到底是哪个人物的回调...,就是线程安全问题,在AF中用了很多GCD函数来保证线程安全 下面函数是用来保证任务创建安全的,AF给出的解释是在iOS8.0以前,任务创建有线程安全问题,如果你适配8.0以后的话,就不会用它了 static...,当completionGroup属性为nil时,默认就使用它 static dispatch_group_t url_session_manager_completion_group() {
在2013年随着iOS7的发布一起面世,苹果对它的定位是作为NSURLConnection的替代者,然后逐步将NSURLConnection退出历史舞台。...现在使用最广泛的第三方网络框架:AFNetworking、SDWebImage等等都使用了NSURLSession。...1.1NSURLSession的使用 NSURLSession本身是不会进行请求的,而是通过创建task的形式进行网络请求(resume()方法的调用),同一个NSURLSession可以创建多个task...NSURLSession的使用有如下几步: •第一步:创建NSURLSession对象 •第二步:使用NSURLSession对象创建Task •第三步:启动任务 1.1.1创建NSURLSession...从NSURLConnection到NSURLSession https://objccn.io/issue-5-4/ ios NSURLSession(iOS7后,取代NSURLConnection)
今天博客的主题不是Alamofire, 而是iOS网络编程中经常使用的NSURLSession。...因为目前iOS开发中,网络请求大部分使用NSURLSession,所以今天的博客我们就以NSURLSession展开。关于之前使用的NSURLConnection在此就不做过多赘述了。...一、NSURLSession概览 NSURLSession对于iOS开发来说并不是什么新的内容,它是Apple在iOS7中引入的,其主要功能是发起网络请求获取网络数据,这与iOS7之前使用的NSURLConnection...1.NSURLSession的类型 在使用NSURLSession时你得知道你使用的是那种类型的Session对吧。...从官方的NSURLSession API中不难看出,公有三种类型的Session:Default sessions,Ephemeral sessions,Background sessions。
这里使用了NSURLSession,是iOS7之后比较主流的用于网络请求的API(iOS7以前多使用NSURLConnection),然后指明了以自身实例作为delegate,started是一个作为参数传入的闭包...显然按我之前的线路走下来retrieveImageTask是有值的,但ImageDownloader还有下面这个方法,调用downloadImageWithURL时retrieveImageTask这个参数为...这里多次使用到的一个callbackWithImage的方法,我们看看它是什么样子: //依次调用fetchLoads[URL]中的所有完成回调,并删除该URL对应的键值对 private func callbackWithImage.... */ public func URLSession(session: NSURLSession, didReceiveChallenge challenge: NSURLAuthenticationChallenge...关于NSURLAuthenticationChallenge的委托方法,可以使用白名单对信任的域名做特殊处理。 嗯,下期就是缓存模块了。
HTTP类型的网络传输使用十分方便,但是其在安全性上却有很大问题,列举如下: 1.HTTP协议在传输数据时是明文的,任何人通过一个简单的抓包工具,就可以截获到所有传输数据。...我们继续往后分析,当B公司与越来越多的公司进行商业合作时,就又有新的问题出现了,比如C公司的c来B公司办事,就需要拿C公司带公章的证明,D公司的d来B公司办事就需要拿D公司带公章的证明...这样一来,B...但是另一种情况,无论出于什么原因,你的后台服务用的是自签名的证书,就想我们上面搭建的HTTPS服务一样,如果在不做任何处理的情况下在项目中访问这样的服务,就会出现问题了,原因是我们自己创建的自签名证书是不受信任的...六、iOS中使用自签名的证书进行HTTPS请求校验 通过Info.plist文件我们是可以绕过安全传输协议的,但是不幸的是,从文档上看,无论开发者通过哪种方式来绕过安全传输协议,Apple都要求开发者在提审时提供合适的理由...: - (void)URLSession:(NSURLSession *)session didReceiveChallenge:(NSURLAuthenticationChallenge *)challenge
1.3 AFN 2.0版本 1.3.1 动机 · 兼容NSURLSession - NSURLSession 是 iOS 7 新引入的用于替代 NSURLConnection 的类。...起初有人推测,NSURLSession 的出现将使AFNetworking 不再有用。但实际上,虽然它们有一些重叠,AFNetworking还是可以提供更高层次的抽象。...因为 NSURLSession API 设计中奇怪的空缺,任何和 NSURLSession 相关的代码都可以用 AFURLSessionManager 改善。...5.1 URL Session的基本概念 NSURLSession是iOS7中新的网络接口,它与咱们熟悉的NSURLConnection是并列的。...首先创建一个后台session单例,这里的Session配置使用后台配置模式,使用backgroundSessinConfiguration:方法配置时应该通过后面的参数为该后台进程指定一个标识符,在有多个后台下载任务时这个标识符就起作用了
HTTPS客户端与服务器交互过程: 1、 客户端第一次请求时,服务器会返回一个包含公钥的数字证书给客户端; 2、 客户端生成对称加密密钥并用其得到的公钥对其加密后返回给服务器; 3、 服务器使用自己私钥对收到的加密数据解密...证书一般分为两种: 一种是向权威认证机构购买的证书,服务端使用该种证书时,因为苹果系统内置了其受信任的签名根证书,所以客户端不需额外的配置。...创建自定义证书 我们在使用自签名证书来实现HTTPS请求时,因为不像机构颁发的证书一样其签名根证书在系统中已经内置了,所以我们需要在App中内置自己服务器的签名根证书来验证数字证书。...iOS端配置 首先把前面生成的.cer文件添加到项目中,注意在添加的时候选择要添加的targets。...:didReceiveChallenge:completionHandler:方法来进行证书的校验: - (void)URLSession:(NSURLSession *)session didReceiveChallenge