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 从音频发送字节

通过 AFNetworking 从服务器获取 Json 响应

如何使用 JSON 格式解析通过 AFNetworking 1.0 获得的响应

通过 JSON 层次结构和 objectForKey 使用 AFNetworking 加载图像视图

如何通过 AFNetWorking 2.0 将 JSON 格式的数据发送到 Web? [复制]

使用 AFNetworking 解析 JSON