xmpp 项目中遇到的问题,用苹果的通信API 写一个PUT 方法,向服务器上传一张图片。遇到如题问题。

Plist 文件没有NSAppTransportSecurity属性 Dic,添加该属性,再添加二级属性NSAllowsArbitraryLoads BOOL  YES

苹果文档:https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html

stackOverflow:http://stackoverflow.com/questions/32631184/the-resource-could-not-be-loaded-because-the-app-transport-security-policy-requi

工具类:HTTPTool.h

 #import <Foundation/Foundation.h>

 typedef void (^HttpToolProgressBlock)(CGFloat progress);
typedef void (^HttpToolCompletionBlock)(NSError *error); @interface HttpTool : NSObject -(void)uploadData:(NSData *)data
url:(NSURL *)url
progressBlock : (HttpToolProgressBlock)progressBlock
completion:(HttpToolCompletionBlock) completionBlock; /**
下载数据
*/
-(void)downLoadFromURL:(NSURL *)url
progressBlock : (HttpToolProgressBlock)progressBlock
completion:(HttpToolCompletionBlock) completionBlock; -(NSString *)fileSavePath:(NSString *)fileName; @end

HTTPTool.m

 #import "HttpTool.h"

 #define kTimeOut 5.0

 @interface HttpTool()<NSURLSessionDownloadDelegate,NSURLSessionTaskDelegate>{

     //下载
HttpToolProgressBlock _dowloadProgressBlock;
HttpToolCompletionBlock _downladCompletionBlock;
NSURL *_downloadURL; //上传
HttpToolProgressBlock _uploadProgressBlock;
HttpToolCompletionBlock _uploadCompletionBlock; } @end @implementation HttpTool #pragma mark - 上传
-(void)uploadData:(NSData *)data url:(NSURL *)url progressBlock:(HttpToolProgressBlock)progressBlock completion:(HttpToolCompletionBlock)completionBlock{ NSAssert(data != nil, @"上传数据不能为空");
NSAssert(url != nil, @"上传文件路径不能为空"); _uploadProgressBlock = progressBlock;
_uploadCompletionBlock = completionBlock; NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:kTimeOut];
request.HTTPMethod = @"PUT"; NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; //NSURLSessionDownloadDelegate
NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:[[NSOperationQueue alloc] init]]; //定义下载操作
NSURLSessionUploadTask *uploadTask = [session uploadTaskWithRequest:request fromData:data]; [uploadTask resume];
} #pragma mark - 上传代理 #pragma mark - 上传进度
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didSendBodyData:(int64_t)bytesSent totalBytesSent:(int64_t)totalBytesSent totalBytesExpectedToSend:(int64_t)totalBytesExpectedToSend{ if (_uploadProgressBlock) {
CGFloat progress = (CGFloat) totalBytesSent / totalBytesExpectedToSend;
_uploadProgressBlock(progress);
}
} #pragma mark - 上传完成
-(void)URLSession:(NSURLSession *)session task:(NSURLSessionTask *)task didCompleteWithError:(NSError *)error{
if (_uploadCompletionBlock) {
_uploadCompletionBlock(error); _uploadProgressBlock = nil;
_uploadCompletionBlock = nil;
}
} #pragma mark - 下载
-(void)downLoadFromURL:(NSURL *)url
progressBlock:(HttpToolProgressBlock)progressBlock
completion:(HttpToolCompletionBlock)completionBlock{ NSAssert(url != nil, @"下载URL不能传空"); _downloadURL = url;
_dowloadProgressBlock = progressBlock;
_downladCompletionBlock = completionBlock; NSURLRequest *request = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:kTimeOut]; //session 大多数使用单例即可 NSURLResponse *response = nil; //发达同步请求
[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:nil]; //NSLog(@"%lld",response.expectedContentLength);
if (response.expectedContentLength <= ) {
if (_downladCompletionBlock) {
NSError *error =[NSError errorWithDomain:@"文件不存在" code: userInfo:nil];
_downladCompletionBlock(error); //清除block
_downladCompletionBlock = nil;
_dowloadProgressBlock = nil;
} return;
} NSURLSessionConfiguration *config = [NSURLSessionConfiguration defaultSessionConfiguration]; //NSURLSessionDownloadDelegate
NSURLSession *session = [NSURLSession sessionWithConfiguration:config delegate:self delegateQueue:[[NSOperationQueue alloc] init]]; //定义下载操作
NSURLSessionDownloadTask *downloadTask = [session downloadTaskWithRequest:request]; [downloadTask resume]; } #pragma mark -NSURLSessionDownloadDelegate
#pragma mark 下载完成
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didFinishDownloadingToURL:(NSURL *)location{ //图片保存在沙盒的Doucument下
NSString *fileSavePath = [self fileSavePath:[_downloadURL lastPathComponent]]; //文件管理
NSFileManager *fileManager = [NSFileManager defaultManager];
[fileManager copyItemAtURL:location toURL:[NSURL fileURLWithPath:fileSavePath] error:nil]; if (_downladCompletionBlock) {
//通知下载成功,没有没有错误
_downladCompletionBlock(nil); //清空block
_downladCompletionBlock = nil;
_dowloadProgressBlock = nil;
} } #pragma mark 下载进度
-(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didWriteData:(int64_t)bytesWritten totalBytesWritten:(int64_t)totalBytesWritten totalBytesExpectedToWrite:(int64_t)totalBytesExpectedToWrite{ if (_dowloadProgressBlock) {
//已写数据字节数除以总字节数就是下载进度
CGFloat progress = (CGFloat)totalBytesWritten / totalBytesExpectedToWrite; _dowloadProgressBlock(progress); }
} -(void)URLSession:(NSURLSession *)session downloadTask:(NSURLSessionDownloadTask *)downloadTask didResumeAtOffset:(int64_t)fileOffset expectedTotalBytes:(int64_t)expectedTotalBytes{ } #pragma mark -传一个文件名,返回一个在沙盒Document下的文件路径
-(NSString *)fileSavePath:(NSString *)fileName{
NSString *document = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES)[];
//图片保存在沙盒的Doucument下
return [document stringByAppendingPathComponent:fileName];
} @end

The resource could not be loaded because the App Transport Security policy requires the use of a secure connection的更多相关文章

  1. Xcode7 beta 网络请求报错:The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

    Xcode7 beta 网络请求报错:The resource could not be loaded because the App Transport Xcode7 beta 网络请求报错:The ...

  2. The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.问题解决

    didFailLoadWithError(): Error Domain=NSURLErrorDomain Code=-1022 "The resource could not be loa ...

  3. 网络请求报错:The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

    iOS9引入了新特性App Transport Security (ATS).详情:App Transport Security (ATS) 如果你想设置不阻止任何网络,只需要在info.plist文 ...

  4. AFNetworking 提示"The resource could not be loaded because the App Transport Security policy requires the use of a secure connection" 解决办法

    原因:iOS9以后,苹果把原http协议改成了https协议,所以不能直接在http协议下GET/POST 解决方案之一: 直接编辑工程文件下的Info.plist文件,加入以下代码 <key& ...

  5. xcode9.4 报错 error:The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

    原因 http | https 协议  不能正常使用 找到的解决方案 但是在字段名上有了变化,不过复制进去 还是会自动选择对应的 解决办法 1. 在Info.plist中添加 App Transpor ...

  6. IOS9网络请求报错:The resource could not be loaded because the App Transport Security policy requires the use of a secure connection.

    今天下载Xcode7试了下,运行项目时报上面的错误,网上查了下原来iOS9引入了新特性App Transport Security (ATS).详情:App Transport Security (A ...

  7. Xcode7 beta 网络请求报错:The resource could not be loaded because the App Transport Security policy requir

          今天升级Xcode 7.0 bata发现网络访问失败.输出错误信息 The resource could not be loaded because the App Transport S ...

  8. The resource could not be loaded because the App Transport

    Xcode7 beta 网络请求报错:The resource could not be loaded because the App Transport Xcode7 beta 网络请求报错:The ...

  9. Xcode7 beta 网络请求报错:The resource could not be loaded because the App Transport

    Xcode7 beta 网络请求报错:The resource could not be loaded because the App Transport Xcode7 beta 网络请求报错:The ...

随机推荐

  1. 两个文件去重的N种姿势

    最近利用shell帮公司优化挖掘关键词的流程,用shell替代了多个环节的操作,极大提高了工作效率. shell在文本处理上确有极大优势,比如多文本合并.去重等,但是最近遇到了一个难搞的问题,即两个大 ...

  2. FreeMarker备忘

    以下内容全部是网上收集: FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: ,文本:直接输出的部分 ,注释:<#-- ... --& ...

  3. Base Filtering Engine 拒绝访问解法

    基本筛选引擎(BFE)是一种管理防火墙和 Internet 协议安全(IPsec)策略以及实施用户模式筛选的服务.停止或禁用 BFE 服务将大大降低系统的安全.还将造成 IPsec 管理和防火墙应用程 ...

  4. Binary Search--二分查找

    Binary Search--二分查找 采用二分法查找时,数据需是排好序的. 基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功:若x小于当前位 ...

  5. php 工厂模式

    <body> <?php //设计模式:工厂模式 /* class YunSuan { public $a; public $b; function Jia() { return ( ...

  6. Laravel框架数据库CURD操作、连贯操作

    这篇文章主要介绍了Laravel框架数据库CURD操作.连贯操作.链式操作总结,本文包含大量数据库操作常用方法,需要的朋友可以参考下 一.Selects 检索表中的所有行 $users = DB::t ...

  7. hdu 3746 kmp求循环节

    题意就是将所给的字符串变成多个完整的循环(至少两个),然后给出最少需要添加的字符数.

  8. 如何将消息发送给Whatsapp联系人

    如何将消息发送给Whatsapp联系人 (由于本人喜欢word文档编辑,不喜欢网络编辑,所以仍然提供pdf版文档,方便查阅http://files.cnblogs.com/franksunny/sen ...

  9. POJ2735/Gym 100650E Reliable Nets dfs

    Problem E: Reliable NetsYou’re in charge of designing a campus network between buildings and are ver ...

  10. cocos2dx学习笔记——demo学习(一)——ActionTest

    在此我会将一步步看到的小白我认为疑难和重点记下,并自解,若是在无法解答,便以红色标记出来,希望各位大神帮忙解惑. 一.onEnter()还有OnExit()是什么 因为小白在使用cocos2dx这款的 ...