使用 AVAudioRecorder 录制后,必须将生成的声音文件发送到 Web 服务。文件数据必须经过 URL 编码并复制到 POST 请求的正文中。录音格式为 kAudioFormatAppleLossless。
作为第一步,在 URL 编码之前,我尝试将 .caf 文件复制到 NSString 中,使用
NSStringEncoding encoding;
NSString * filestring = [NSString
stringWithContentsOfURL:self.audioRecorder.url
usedEncoding:&encoding
error:&error];
我收到以下错误:
Error Domain=NSCocoaErrorDomain Code=264 "The operation couldn\u2019t be completed. (Cocoa error 264.)"
返回的编码是 0x5bab9f0,它不在为 NSStringEncoding 定义的值列表中。
写入文件时 AVAudioRecorder 使用什么编码?将二进制文件转换为 URL 编码字符串的最佳方法是什么?
最佳答案
绝不。采用。 NSString。为了。数据。那是。不是。 A. 字符串...
使用 NSData 代替,您不需要对其进行 URLEncode(因为它“已经是”)。
你可以使用这个:
NSMutableData *postData = [[NSMutableData alloc] init];
[postData appendData:[@"--boundary\r\nContent-Disposition: form-data; name=\"myfile\"; filename=\"ad.gif\"\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[NSData dataWithContentsOfURL:self.audioRecorder.url]];
[postData appendData:[@"\r\n--boundary--\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[myRequest setHTTPMethod:@"POST"]; // this you probably already did.
[myRequest setHTTPBody:postData];
关于ios - 如何将二进制数据转换为 NSstring?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5235331/