你们中的许多人都像我的问题一样愚蠢。但我真的遇到了这个问题。
当我调用Web服务下载音频文件时。它返回一个html页面内容,要求我通过Capcha安全性。检查下面的截图。
我使用以下代码下载文件
NSString *strPathComponent = @"http://www.tipoff.tips/app/development/tipoffaudio/1472898051.caf";
NSString *docDirPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];
NSString *filePath = [NSString stringWithFormat:@"%@/%@", docDirPath , [strPathComponent lastPathComponent]]
;
NSURL *url =[NSURL URLWithString:[strPathComponent
stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]]];
__block BOOL isDownloaded = false;
NSURLSession *session = [NSURLSession sharedSession];
NSURLSessionDataTask *task = [session dataTaskWithURL:url completionHandler:^(NSData * _Nullable data, NSURLResponse * _Nullable response, NSError * _Nullable error) {
if (error) {
NSLog(@"error %@",error);
}
else{
NSLog(@"data of %@",[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding]);
NSLog(@"data of size %lu write at %@",[data length],filePath);
if([[NSFileManager defaultManager] createFileAtPath:filePath contents:data attributes:nil]){
NSLog(@"file write at %@",filePath);
}
else{
}
}
isDownloaded = true;
}];
[task resume];
这比较早。但现在不是。我还设置了所有运输安全
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
通常它应该返回我的CAF文件的内容,但它返回我看起来像上面的屏幕截图的HTML联系人。