从 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 获取图像的主要内容,如果未能解决你的问题,请参考以下文章