我正在尝试使用AFNetworking
通过POST调用将音频文件上传到Cloudinary。我一直在使用AFNetworking
轻松地将POST调用发送到我自己的服务器,但这是我第一次尝试通过AFNetworking发送NSData
对象,这是我认为问题所在,并且不确定是否需要调整该调用使它工作。
我的代码
我需要通过post调用将4个参数发送到我放入字典中的Cloudinary
服务...。
NSData *audioFile = [[NSData alloc]initWithContentsOfURL:_audioRecorder.url];
NSMutableDictionary *myParam = [NSMutableDictionary dictionary];
[myParam setValue:@(nowTime) forKey:@"timestamp"];
[myParam setValue:audioFile forKey:@"file"];
[myParam setValue:api_key forKey:@"api_key"];
[myParam setValue:finalSignature forKey:@"signature"];
[cloudManager setUpDataCall:@"/upload" withParameters:myParam];
setUpDataCall
使用此代码转到AFHTTPSessionManager
的子类。如果您对@"https://api.cloudinary.com/v1_1/karmo/raw"
感到好奇,这就是帖子URL的其余部分。 - (void)setUpDataCall:(NSString *)callURL withParameters:(NSDictionary *)parameters {
[self POST:callURL parameters:parameters success:^(NSURLSessionDataTask *task, id responseObject) {
if ([self.delegate respondsToSelector:@selector(cloudManager:didReturnData:)]){
//Success :)
}
}failure:^(NSURLSessionDataTask *task, NSError *error) {
if ([self.delegate respondsToSelector:@selector(cloudManager:didFailWithError: )]) {
//Error :(
}
}];
}
错误
尝试发送文件
Invalid type in JSON write (NSConcreteData)
时收到此错误。当我添加异常断点时,它可以识别
[mutableRequest setHTTPBody:[NSJSONSerialization dataWithJSONObject:parameters options:self.writingOptions error:error]];
在
AFURLRequestSerialization.m
类的此方法中。- (NSURLRequest *)requestBySerializingRequest:(NSURLRequest *)request
withParameters:(id)parameters
error:(NSError *__autoreleasing *)error
我还看到了一些其他的stackoverflow问题,例如以下问题,但我不确定这些问题是否仍然有用,因为这些帖子中的代码似乎在代码中引发了错误,因为我猜
AFNetworking
自这些帖子以来已更新。AFNetworking Uploading a file
任何代码帮助或示例将不胜感激。多谢您抽出宝贵的时间。
最佳答案
您是否尝试了以下帖子评论中所说明的建议?
Error with NSJSONSerialization - Invalid type in JSON write (Menu)
关于ios - AFNetworking错误-'无效的JSON写入类型(NSConcreteData)'-上传音频文件时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26385400/