0

NSBlockOperationサーバーからオーディオファイルをダウンロードしてドキュメントディレクトリに保存しようとしているを使用しています。

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;
}

オーディオ ファイルをダウンロードするために同期呼び出しを行いました。しかし、時間がかかりすぎて、長い時間が経過すると NSData のゼロバイトが返されます。60 秒間タイムアウトしたリクエストが原因だと思いました。次に、タイムアウト要求を削除しましたが、問題はそのままです。私のクエリは

  1. タイムアウトはサーバー接続に関連しており、サーバーからのデータの取得には関連していません
  2. サーバーからのゼロバイト応答の理由は何ですか。
4

0 に答える 0