[英]Error Domain = NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed. (Cocoa error 3840.)
[英]Error:Error Domain=NSCocoaErrorDomain Code=3840 "The operation couldn’t be completed.
我正在尝试通过REST API调用使用AFHTTPSessionManager上传图像。
以下是我的代码
AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
manager.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
[manager.requestSerializer setValue:@"image/jpeg" forHTTPHeaderField:@"Content-Type"];
NSData *imageData = UIImageJPEGRepresentation(image, 0.5);
[manager POST:@"http://localhost:8888/uploadImage/100" parameters:nil constructingBodyWithBlock:^(id formData) {
[formData appendPartWithFileData:imageData name:@"avatar" fileName:@"avatar.jpg" mimeType:@"image/jpeg"];
} success:^(NSURLSessionDataTask *task, id responseObject) {
NSLog(@"success:%@", responseObject);
} failure:^(NSURLSessionDataTask *task, NSError *error) {
NSLog(@"Error:%@", error);
}];
响应将转到字段阻止并得到以下错误
错误:错误域= NSCocoaErrorDomain代码= 3840“操作无法完成。(可可错误3840。)”(JSON文本未以数组或对象开头,并且未设置允许片段的选项。)UserInfo = 0x9cbc690 {NSDebugDescription = JSON文本不是以数组或对象开头,并且没有选项以允许未设置片段。NSUnderlyingError= 0x9cbaf00“请求失败:所需长度(411)”}
有人对这个问题有想法吗?
谢谢
+(void)uploadImageData : (NSString *)url parameters:(NSDictionary *)dparameters imageData:(NSData *)dimageData success: (void (^) (NSDictionary *responseStr))success failure: (void (^) (NSError *error))failure
{
AFHTTPRequestOperationManager *manager = [[AFHTTPRequestOperationManager alloc] initWithBaseURL:[NSURL URLWithString:url]];
AFHTTPRequestOperation *op = [manager POST:url parameters:dparameters constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
//do not put image inside parameters dictionary as I did, but append it!
[formData appendPartWithFileData:dimageData name:@"image" fileName:@"photo11.jpg" mimeType:@"image/jpeg"];
} success:^(AFHTTPRequestOperation *operation, id responseObject) {
//success
success(responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
// failure
failure(error);
}];
op.responseSerializer.acceptableContentTypes = [NSSet setWithObject:@"text/html"];
[op start];
}
错误
JSON文本不是以数组或对象开头,并且没有允许设置片段的选项
指示服务器默认情况下发送的JSON带有iOS JSON解析器不支持的片段。 您可以通过设置使之AllowFragments
的选项readingOptions
您AFJSONResponseSerializer
。
尝试添加(快速)
manager.responseSerializer = AFJSONResponseSerializer(readingOptions: NSJSONReadingOptions.AllowFragments)
这为我解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.