从https网址获取图片

时间:2017-06-19 05:45:54

标签: ios objective-c uiimageview

我没有从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 在两个条件下都返回nil

我添加了 NStransportsecurity

5 个答案:

答案 0 :(得分:0)

最好使用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];

答案 1 :(得分:0)

由于您的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

答案 2 :(得分:0)

您可以使用

#import" UIImageView + AFNetworking.h"

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

答案 3 :(得分:0)

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

 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;

                                   }
                               }];

答案 4 :(得分:0)

请检查您提供的链接是否有某些限制,并且由于某种原因其连接已关闭。 enter image description here

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