从 https url ios 获取图像

Posted

技术标签:

【中文标题】从 https url ios 获取图像【英文标题】:get image from https url ios 【发布时间】:2017-06-19 05:45:54 【问题描述】:

我没有从 url 获取图像。我无法在 *** 上找到合适的解决方案。我找到了两种从 URL 转换图像的方法,但它们不起作用

  NSURL *url = [NSURL URLWithString:@"https://mastersoftwaretechnologies.com:8014/uploads/50x50/6455.png"];
NSData *data = [NSData dataWithContentsOfURL:url];
UIImage *img = [[UIImage alloc] initWithData:data];

第二种方法是

    NSURL * imageURL = [NSURL URLWithString:[@"https://mastersoftwaretechnologies.com:8014/uploads/50x50/6455.png" stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"img url ==%@",imageURL);
NSData *data = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:imageURL]];
UIImage *MYimage = [UIImage imageWithData:data];

UIImage 在两种情况下都返回 nil

我已添加 NStransportsecurity

【问题讨论】:

你在 yiur 应用中添加了 NSTransportSecurity 好像你的网址有问题无法在浏览器中看到图片。你可以吗? 是的..我增加了传输安全性。 url 在 safari @DS Dharma 中工作 您需要等待一段时间 【参考方案1】:

你可以使用

#import "UIImageView+AFNetworking.h"

[profileImageView setImageWithURL:[NSURL URLWithString:photoURL] placeholderImage:[UIImage imageNamed:@"placeholder"]];

【讨论】:

【参考方案2】:

您可以将此代码与有效的网址一起使用。

 NSString *url = @"";
 NSURL *URL = [NSURL URLWithString:url];
 NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:URL];
 [NSURLConnection sendAsynchronousRequest:request
                                           queue:[NSOperationQueue mainQueue]
                               completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) 
                                   if ( !error )
                                   
                                       UIImage *image = [[UIImage alloc] initWithData:data];
                                       self.myImage.image = image;

                                   
                               ];

【讨论】:

【参考方案3】:

由于您的 ssl 证书或服务器端限制导致此问题。

我检查了您的图片网址,并收到以下错误消息,SDWebImage

尝试解决此错误消息。

Error Domain=NSURLErrorDomain Code=-1200 “发生 SSL 错误,无法与服务器建立安全连接。” UserInfo=_kCFStreamErrorCodeKey=-9806, NSLocalizedRecoverySuggestion=你还是要连接到服务器吗?, NSUnderlyingError=0x1700504d0 Error Domain=kCFErrorDomainCFNetwork Code=-1200 "(null)" UserInfo=_kCFStreamPropertySSLClientCertificateState=0, _kCFNetworkCFStreamSSLErrorOriginalValue=-9806, _kCFStreamErrorDomainKey=3, _kCFStreamErrorCodeKey=-9806, NSLocalizedDescription=发生 SSL 错误,无法与服务器建立安全连接。, NSErrorFailingURLKey=https://mastersoftwaretechnologies.com:8014/uploads/50x50/6455.png, NSErrorFailingURLStringKey=https://mastersoftwaretechnologies.com:8014/uploads/50x50/6455.png, _kCFStreamErrorDomainKey=3

注意 - 您需要根据您的 ssl 证书设置 ATS。

在终端中运行此命令以获得更多解释。

nscurl --ats-diagnostics https://fmastersoftwaretechnologies.com --verbose

【讨论】:

【参考方案4】:

请检查您提供的链接是否有限制,并且它的连接由于某种原因被关闭。

如果链接正确或没有限制,您可以在 ping 链接时在浏览器中看到图像内容。

对于可靠的图片下载,如果你想做本地方法,你可以去:

原生图片下载器:


 NSURLSession *session = [NSURLSession sessionWithConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration] delegate:self delegateQueue:nil]
NSString *urlString = @"http//:........";//url link
urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURLSessionDownloadTask *downloadSongTask = [session downloadTaskWithURL:[NSURL URLWithString:urlString]];
 [downloadTask resume];

您将获得下载进度并完成委托回调。

SDWebImage:

1. Install -> pod 'SDWebImage'
2. Import this header to class where you are downloading image,
3. Code snippet:
   
 [imageView sd_setImageWithURL:url placeholderImage:[UIImage imageNamed:@"default"]options:SDWebImageAllowInvalidSSLCertificates];

【讨论】:

【参考方案5】:

最好使用 SDWebImage 库来下载图像,它在后端管理大量工作,包括内存管理和缓存。

SdWebImageLibrary

使用pod 'SDWebImage-ProgressView'安装

对这个网址使用以下方法https://test.com:/image.png

[self.imageView bravo_setImageWithURL:[NSURL URLWithString:strUrl] placeholderImage:[UIImage imageNamed:placeholder_qrcode] options:SDWebImageAllowInvalidSSLCertificates convertTo:ImageConversionTypeCIRCULARPROFILEPICTURE];

【讨论】:

我没有通过 URL 在 UIImageview 上设置图像。我只需要 UIImage。 从 UIImageView 中可以轻松获取图片 UIImageView.image

以上是关于从 https url ios 获取图像的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 URL 路径从 iOS 的照片库中获取图像?

从 ios 中的 Url 获取多个图像

从描述 rss ios 获取图像 url

从 ios 中的 URL 获取图像不起作用

在 iOS Swift 中从设备获取图像的 URL 路径

如何从 PHAsset for iOS 13 获取图像 url