微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – AFNetworking 2.2.1从Amazon S3服务器加载图像

我在尝试在Amazon S3服务器上下载图像时遇到了问题.

我收到以下错误

Error Domain=AFNetworkingErrorDomain Code=-1016 "Request Failed: unacceptable content-type: binary/octet-stream"

有人有想法吗?

解决方法

错误生成
- (BOOL)validateResponse:(NSHTTPURLResponse *)response
                    data:(NSData *)data
                   error:(NSError * __autoreleasing *)error

在不可思议的MIME类型的响应的情况下AFHTTPResponseSerializer的方法.

您可以通过向响应序列化程序添加必需的MIME类型来修复它

// In this sample self is inherited from AFHTTPSessionManager
self.responseSerializer = [AFImageResponseSerializer serializer];
NSSet *set = self.responseSerializer.acceptableContentTypes;
self.responseSerializer.acceptableContentTypes = [set setByAddingObject:@"binary/octet-stream"];

或者您可以修改AFImageResponseSerializer:

- (instancetype)init {
    self = [super init];
    if (!self) {
        return nil;
    }

    self.acceptableContentTypes = [[NSSet alloc] initWithObjects:@"image/tiff",@"image/jpeg",@"image/gif",@"image/png",@"image/ico",@"image/x-icon",@"image/bmp",@"image/x-bmp",@"image/x-xbitmap",@"image/x-win-bitmap",@"binary/octet-stream",nil];

#if defined(__IPHONE_OS_VERSION_MIN_required)
    self.imageScale = [[UIScreen mainScreen] scale];
    self.automaticallyInflatesResponseImage = YES;
#endif

    return self;
}

但问题的根源可能是您使用错误的MIME类型或根本没有类型将图像保存到亚马逊.在我的代码中,我使用以下代码将图像保存到亚马逊

S3PutObjectRequest *putObjectRequest = [ [ S3PutObjectRequest alloc ] initWithKey:keyImage    inBucket:self.s3BucketName ];
putObjectRequest.contentType = @"image/jpeg";
putObjectRequest.data = UIImageJPEGRepresentation( [ image fixOrientation ],0.5f );
putObjectRequest.cannedACL = [ S3CannedACL publicRead ];

原文地址:https://www.jb51.cc/iOS/332606.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐