繁体   English   中英

从https网址获取图片

[英]get image from https url ios

我没有从url.i获取图像我无法在StackOverflow上找到正确的解决方案。 我发现了两种从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都返回零

我添加了NStransportsecurity

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

SdWebImageLibrary

使用pod 'SDWebImage-ProgressView'

使用以下方法使用此URL https://test.com:/image.png

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

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

我已经检查了你的图片网址,并获得了SDWebImage错误信息。

尝试解决此错误消息。

错误域= NSURLErrorDomain代码= -1200“发生SSL错误,无法与服务器建立安全连接。” UserInfo = {_ kCFStreamErrorCodeKey = -9806,NSLocalizedRecoverySuggestion =你想连接到服务器吗?NSUnderlyingError = 0x1700504d0 {错误域= kCFErrorDomainCFNetwork代码= -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

您可以使用

#import“UIImageView + AFNetworking.h”

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

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

 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;

                                   }
                               }];

请检查您提供的链接是否有一些限制,并且由于某种原因其连接已关闭。 在此输入图像描述

如果链接正确或没有限制,您可以在浏览器中查看图像内容,同时将链接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];
}

暂无
暂无

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

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