【发布时间】:2014-12-10 16:45:48
【问题描述】:
我正在尝试使用 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 的子类。如果您好奇,这是帖子 URL 的其余部分 @"https://api.cloudinary.com/v1_1/karmo/raw"
- (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 已经更新了帖子。
任何代码帮助或示例将不胜感激。非常感谢您抽出宝贵的时间。
【问题讨论】:
标签: ios json afnetworking afnetworking-2 cloudinary