Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/106.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 同步下载音频文件表单服务器时出错_Ios_Nsurlconnection_Nsurlrequest_Nsoperationqueue_Nsblockoperation - Fatal编程技术网

Ios 同步下载音频文件表单服务器时出错

Ios 同步下载音频文件表单服务器时出错,ios,nsurlconnection,nsurlrequest,nsoperationqueue,nsblockoperation,Ios,Nsurlconnection,Nsurlrequest,Nsoperationqueue,Nsblockoperation,我正在使用一个NSBlockOperation,其中我试图从服务器下载一个音频文件并将其存储在documents目录中 NSBlockOperation *audioOperation = [NSBlockOperation blockOperationWithBlock:^{ //Perform doanload NSString *itemStoredPath = [self downloadPOIAudioByUrl:itemUrl itemName:itemName folderNam

我正在使用一个
NSBlockOperation
,其中我试图从服务器下载一个音频文件并将其存储在documents目录中

NSBlockOperation *audioOperation = [NSBlockOperation blockOperationWithBlock:^{
//Perform doanload
 NSString *itemStoredPath = [self downloadPOIAudioByUrl:itemUrl itemName:itemName folderName:itemFolder iteInfo:cacheAudioDetails];

// Update database
.....
}];


-(NSString *)downloadPOIAudioByUrl:(NSString *)itemUrl itemName:(NSString *)itemName folderName:(NSString *)folderName iteInfo:(CacheAudioDetails *)itemInfo {
    // Get the url for video upload
    NSURL *audioUrl = [NSURL URLWithString:[itemUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
    // Set the response parameter
    NSURLResponse *serverResponce = nil;
    // Set the error parameter
    NSError *error = nil;
    // Create a request & set the time out interval for 1 min.
    //NSURLRequest *videoRequest = [NSURLRequest requestWithURL:videoUrl cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60.0];
    NSURLRequest *audioRequest = [NSURLRequest requestWithURL:audioUrl];
    // Set the connection
    NSData *audioData = [NSURLConnection sendSynchronousRequest:audioRequest returningResponse:&serverResponce error:&error];
    if (error == nil && audioData != nil) {
      // Data Found
      // Store in directory & return the path to store in database
      return audioPath;
    }
 return nil;
}
我已经同步调用了downlaod音频文件。但是它花费了太多的时间&在很长一段时间后,它返回零字节的NSData。我想这是因为我的超时请求需要60秒。然后我删除了超时请求,但问题仍然存在。我的问题是

  • 超时与服务器连接有关&而不是从服务器获取数据
  • 服务器一次响应零字节的原因是什么

  • 你的应用程序真的能连接到你的服务器吗?我可以问你为什么要在同步调用中下载它吗?使用指向NSError对象指针的指针的方法,总是通过返回值指示可能的错误。也就是说,如果出现错误,请测试返回值。如果错误对象参数为nil或不为nil,则不要检查该参数,以确定是否存在错误。只有在方法通过返回值指示错误后,才能使用error参数。处理网络时,还应使用异步样式。同步便捷的网络请求方法仅用于玩具应用程序和演示目的。我将尝试这种方法。谢谢你的帮助。