小编gN0*_*0Me的帖子

NSURLSession和后台流上传

我在使用NSURLSession资源库中的照片上传到服务器时遇到了一些问题.

起初NSURLSession不支持流式上传.我试图使用它时遇到异常:

@property (nonatomic, strong) NSURLSession *uploadSession;

...

_uploadSession = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration
                backgroundSessionConfiguration:kUploadBackgroundURLSessionIdentifier] delegate:self delegateQueue:nil];

...

NSURLSessionUploadTask *task = [self.uploadSession uploadTaskWithStreamedRequest:URLRequest];
Run Code Online (Sandbox Code Playgroud)

这是一个例外:

Terminating app due to uncaught exception 'NSGenericException', reason: 'Upload tasks in background sessions must be from a file'
Run Code Online (Sandbox Code Playgroud)

这真的很奇怪,因为Apple的手册不包含任何仅uploadTaskWithRequest:fromFile:用于后台会话的信息.如果我想从资源库上传真正庞大的视频文件怎么办?我应该先将它保存到我的tmp目录吗?

看起来唯一的理由就是使用uploadTaskWithRequest:fromFile:,对吗?但是我有一个问题,如果上传过程被中断并开始在后台上传下一部分,服务器如何知道该文件的哪一部分正在上传?

我应该为此管理一些事情吗?以前我在URL请求中使用了Content-Range,如果我想继续上传之前启动的文件的一部分.现在我不能这样做 - 我必须在创建上传任务之前创建一个URL请求,并且看起来NSURLSession必须自动为我做这样的事情?

有没有人做过这样的事情?谢谢

background uploading ios alassetslibrary nsurlsession

9
推荐指数
1
解决办法
5421
查看次数

NSURLRequest在重定向请求时丢失了HTTP标头"授权"

我们在后台模式下从服务器下载文件时遇到问题.将请求重定向到另一台服务器时,HTTP标头"授权"字段丢失.

我们做了一些实验,并注意到其他字段(即使是相同但最后用"下划线"符号"Authorization_")在重定向中完美地工作.看起来这个字段根据一些安全原因被删除,例如,如果不同的服务器使用不同的认证数据.

可以使用在前台模式下手动附加"授权"字段

URLSession:task:willPerformHTTPRedirection:newRequest:completionHandler:
Run Code Online (Sandbox Code Playgroud)

方法.我们尝试在后台模式下使用重定向请求时出现问题.因为根据文档"后台会话中的任务自动遵循重定向".

我在RFC 2616中找不到关于跳过此字段的任何内容,但是假设在后台模式下重定向期间可能存在一些未记录的解决方案来保存"授权"字段.

让我假设我们的前端服务器可能在重定向响应中提供一些特殊字段,可以说重定向服务器是可信任的,我们可以使用"授权"字段而无需任何修改.

这只是一个想法,我们可能不得不以其他方式使用它.你能指点我们吗?

redirect objective-c nsurlrequest http-headers nsurlsession

8
推荐指数
1
解决办法
1132
查看次数

使用iOS上的私钥加密数据

我在"证书,密钥和信任服务编程指南"中找到了关于使用公钥加密数据的示例.但是如何使用私钥加密并使用公钥解密?我找不到任何关于它的样品.提前致谢

security cryptography rsa ios

2
推荐指数
1
解决办法
2281
查看次数

在Xcode 4.2中,retainCount发生了什么?

我注意到在将我的Xcode更新为4.2之后,retainCount总是等于-1.我不在我的项目中使用ARC,我甚至尝试在项目设置中创建新项目并将ARC选项切换为关闭,但下一行的工作非常奇怪:

NSString *string = [[NSString alloc] init];
NSLog(@"%i", [string retainCount]);   //-1
[string retain];
[string retain];
[string retain];
NSLog(@"%i", [string retainCount]);   //still -1
[string release];
[string release];
[string release];
NSLog(@"%i", [string retainCount]);   //still -1
Run Code Online (Sandbox Code Playgroud)

我想念一下吗?我认为如果关闭ARC选项,项目将像以前一样完全正常工作.

ios retaincount xcode4.2 automatic-ref-counting

0
推荐指数
1
解决办法
656
查看次数