ios - 如何将二进制数据转换为 NSstring?

标签 ios iphone url encoding binary-data

使用 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/

相关文章:

c# - 如何替换url参数?

Javascript:设置 cookie - 动态 URL 参数名称

ios - 关于如何显示用户评论列表的想法(UITableView vs UIScrollView vs?)

ios - 永远在后台运行 Swift 2.0 应用程序以将位置更新到服务器

iphone - AVFoundation - 从 Y 平面获取灰度图像 (​​kCVPixelFormatType_420YpCbCr8BiPlanarFullRange)

objective-c - 属性属性 "retain"似乎不起作用?

java - 如何将 URL 编码为 "browserable"?

ios - UITextView中的不同颜色

objective-c - 当已经完全放大时,如何强制 UIScrollView 完全忽略放大手势?

ios - iOS 6 上的长期后台任务执行