AFNetworking 通过 JSON 从音频发送字节
Posted
技术标签:
【中文标题】AFNetworking 通过 JSON 从音频发送字节【英文标题】:AFNetworking send bytes from Audio via JSON 【发布时间】:2015-08-06 22:39:06 【问题描述】:我有客户端 ios 应用程序,它应该向服务器发送带有音频字节的 json 请求。
在服务器上我有 Hibernate (mysql) 和下一个模型:
@Column(name = "voice_data", nullable = false, unique = false, columnDefinition="mediumblob")
@Lob
public byte[] getVoiceData() return voiceData;
public void setVoiceData(byte[] voiceData) this.voiceData = voiceData;
在 iOS 我想获取刚刚录制的语音并保存到数据库:
@property (strong, nonatomic) AVAudioRecorder *audioRecorder;
// some code ...
NSData *data = [[NSData alloc] initWithContentsOfFile:_audioRecorder.url.path];
NSString* dataAsString = [NSString stringWithUTF8String:[data bytes]];
NSDictionary *params = @
MODEL_VOICE_VOICE_DATA : dataAsString,
// etc parameters
;
NSString *url = [NSString stringWithFormat:@"%@", URL];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
manager.requestSerializer = [AFJSONRequestSerializer serializer];
[manager POST:url parameters:params
success:^(AFHTTPRequestOperation *operation, id responseObject)
NSLog(@"%@", responseObject);
failure:^(AFHTTPRequestOperation *operation, NSError *error)
// ...
];
//
然后在服务器上我输入了请求数据:
["id":13,"voiceData":[],"date":....
所以,看起来它没有正确解析音频(因为它是空的)。我做错了什么?以及我应该如何将数据发送到服务器?
【问题讨论】:
如果设置断点,什么是dataAsString?是你所期望的吗? @i_am_jorf,不,它是“nil” 我不认为您可以使用 UTF8 作为编码将二进制文件转换为字符串。见:***.com/questions/392464/… @i_am_jorf 谢谢,会试试的 【参考方案1】:正如@i_am_jorf 提到的,问题在于将二进制数据转换为 UTF-8 字符串。 已解决QSUtilities library:
-
下载库并将库链接到项目(在 iOS 8+ 中需要一些 ARC 更新)
使用
encodeBase64WithData
函数转换数据
NSData *data = [[NSData alloc] initWithContentsOfFile:_audioRecorder.url.path];
NSString* dataAsString = [QSStrings encodeBase64WithData:data];
【讨论】:
以上是关于AFNetworking 通过 JSON 从音频发送字节的主要内容,如果未能解决你的问题,请参考以下文章
通过 AFNetworking 从服务器获取 Json 响应
如何使用 JSON 格式解析通过 AFNetworking 1.0 获得的响应
通过 JSON 层次结构和 objectForKey 使用 AFNetworking 加载图像视图