繁体   English   中英

错误:错误域= NSCocoaErrorDomain代码= 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的选项readingOptionsAFJSONResponseSerializer

尝试添加(快速)

manager.responseSerializer = AFJSONResponseSerializer(readingOptions: NSJSONReadingOptions.AllowFragments)

这为我解决。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM