ASIHttpRequest - 移动到实时 PHP 服务器后不创建临时文件

Posted

技术标签:

【中文标题】ASIHttpRequest - 移动到实时 PHP 服务器后不创建临时文件【英文标题】:ASIHttpRequest - Not creating temp file after moving to live PHP server 【发布时间】:2013-01-25 11:04:41 【问题描述】:

我正面临这个奇怪的问题。在点击一个按钮时,我正在从我的 php 服务器下载媒体文件,例如图像、视频和音频。对于下载部分,我使用ASIHTTPRequest

我使用此代码恢复下载:

NSString *audio_url_f = [myDetailPeom poem_audio_url];

NSURL *url = [NSURL URLWithString:audio_url_f];

ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setDelegate:self];

[request setShouldContinueWhenAppEntersBackground:YES];
[request setNumberOfTimesToRetryOnTimeout:3];
[request setDelegate:self];
        //
NSString *path = [NSString stringWithFormat:@"%@/Documents/%@",NSHomeDirectory(),fileName];
path = [path stringByAppendingString:@".download"];   

// This file has part of the download in it already
[request setTemporaryFileDownloadPath:path];
[request setAllowResumeForFileDownloads:YES];
[request setDownloadDestinationPath:filePath];

//
[request setUserInfo:[NSDictionary dictionaryWithObject:@"audio" forKey:@"type"]];
[request setDidFinishSelector:@selector(requestFinished:)];
[request setDidFailSelector:@selector(requestFailed:)];
[request startAsynchronous];

如果网络出现故障,下载将停止并正常恢复。部分下载的文件是在正确的位置创建的,文件名中附加了.download。一旦网络可用,它会正常恢复下载。

现在我将我的 Web 应用程序移至实时 PHP 服务器(两者都在同一台服务器上)。但部分文件根本没有创建。

【问题讨论】:

不考虑您的问题,但考虑切换到其他框架,例如 AFNetworkingASIHTTP 不再由作者维护/支持 【参考方案1】:

除非您在 URL 中犯了错误,否则极不可能。大多数时候犯的一个常见错误是在移动到实时服务器时,如果它的 HTTPS 应该在 ASI 中正确处理。如果是这样,请尝试将 setValidatesSecureCertificate 设置为 NO。

由于不推荐使用 ASIHttpRequest,您应该根据需要考虑迁移到 AFNetworking 或 RestKit 或其他一些框架。

【讨论】:

其实直播服务器不是HTTP。 你能调试这个吗? 我尽力了,当连接到实时服务器时,它根本没有创建 .download 文件。【参考方案2】:

试试这个代码来获取文档目录?

NSString *documentDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];

NSString *path= [documentDirectory stringByAppendingPathComponent:@"test.download"];

最好使用缓存目录而不是文档目录。

【讨论】:

【参考方案3】:

这会发生在您的场景中吗?

ASIHTTPRequest setTemporaryFileDownloadPath: not working with some URL's

检查这个是否重定向。

【讨论】:

以上是关于ASIHttpRequest - 移动到实时 PHP 服务器后不创建临时文件的主要内容,如果未能解决你的问题,请参考以下文章

IOS-网络(ASIHTTPRequest的使用简介)

异步添加图像 - ASIHTTPRequest

核心数据还是 ASIHTTPRequest 缓存?

IOS开发 REST请求 ASIHTTPRequest用法

ASIHTTPRequest类库简介和使用说明

ASIHTTPRequest - 从相机胶卷上传文件