SDWebImage图片不显示 Error Domain=NSURLErrorDomain Code=-1100

最新做新项目,发现图片加载不出来。图片url是这样的
https://f.shiyongbao365.com/shell/weilaijishi/9f868738f6ac4be7b647f209e7d9fb6a.jpeg
浏览器可以加载出来,当在项目中SDWebImage加载不出来查看错误打印

Error Domain=NSURLErrorDomain Code=-1100

网上有各种解决方案,在这里也给大家总结出来

方案一:

[cell.diviceIV sd_setImageWithURL:[NSURL URLWithString:imgStringUrl] placeholderImage:nil options:SDWebImageRetryFailed completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
    if (image){
        // Set your image over here
       }else{
           //something went wrong
       }
}];

stackoverflow上有人的解决方式
把options 设置成SDWebImageRetryFailed 让其能在失败后重试

此方法不奏效

方案二:

有人说,可能是最开始没有请求到,这个url一直在图片请求失败列表里,然后循环请求失败。
于是我在请求前加了下面的代码:

[[SDWebImageManager sharedManager].failedURLs removeObject:url];

结果依然加载不出来

方案三:

检查url是否有中文字符,需要编码

url = [url stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

我的url没有中文字符,排除

方案四:

https请求导致的失败,在info.plist文件中添加属性

NSAppTransportSecurity

    NSAllowsArbitraryLoads
    

我已经添加了,这个也可以排除

方案五:

设置用户代理

NSString *userAgent = @"";
userAgent = [NSString stringWithFormat:@"%@/%@ (%@; iOS %@; Scale/%0.2f)", [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleExecutableKey] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleIdentifierKey], [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] ?: [[[NSBundle mainBundle] infoDictionary] objectForKey:(__bridge NSString *)kCFBundleVersionKey], [[UIDevice currentDevice] model], [[UIDevice currentDevice] systemVersion], [[UIScreen mainScreen] scale]];
 if (userAgent) {
        if (![userAgent canBeConvertedToEncoding:NSASCIIStringEncoding]) {
            NSMutableString *mutableUserAgent = [userAgent mutableCopy];
            if (CFStringTransform((__bridge CFMutableStringRef)(mutableUserAgent), NULL, (__bridge CFStringRef)@"Any-Latin; Latin-ASCII; [:^ASCII:] Remove", false))       {
                userAgent = mutableUserAgent;
            }
        }
        [[SDWebImageDownloader sharedDownloader] setValue:userAgent forHTTPHeaderField:@"User-Agent"];
  }

结果也并没有解决,这个方案也启发检查图片请求头

方案六:

因为之前的项目,用到了局域名域名请求,所以查看代码发现在图片的请求头里面加了代码设置host

 if (kUsingTestServer) { 
          [_imageDownloader setValue:@"nicolas.test.com" forHTTPHeaderField:@"Host"];
        }

把相关的代码去掉,完美解决问题。

如果你使用SDWebImage加载图片是也失败,你可以从这些方案里面去查找。
或许能够给你启发。

文章和代码若有不对地方,欢迎批评指正。

你可能感兴趣的:(SDWebImage图片不显示 Error Domain=NSURLErrorDomain Code=-1100)