为啥在 Web 浏览器中工作的 url 没有在 UIImageview 中加载

Posted

技术标签:

【中文标题】为啥在 Web 浏览器中工作的 url 没有在 UIImageview 中加载【英文标题】:why the url working in web browser not loading in UIImageview为什么在 Web 浏览器中工作的 url 没有在 UIImageview 中加载 【发布时间】:2017-07-21 05:53:39 【问题描述】:

嗨,在我的应用程序中想要显示来自 url 的图像。该网址基于此处的 api 响应,通过共享示例格式 https://myserver.com/:myimage.jpg 当我在 Web 浏览器中浏览此响应时,会显示图像,但是当我尝试在 UIImageView 中加载它时,不会显示图像。当我从 :myimage 中删除 ':' 时,它也在 UIImageView 中工作。为什么在 Web 浏览器中工作的 url 没有在 UIImageview 中加载

以下是我的代码

NSString *STR_url = @"https://myserver.com/:myimage.jpg";
    _IMG_imageVW.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:STR_url]]];

工作代码是

NSString *STR_api = @"https://myserver.com/";
    NSString *STR_image_resp = @":myimage.jpg";
    STR_image_resp = [STR_image_resp stringByReplacingOccurrencesOfString:@":" withString:@""];
    NSString *STR_final = [NSString stringWithFormat:@"%@%@",STR_api,STR_image_resp];
_IMG_imageVW.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:STR_final]]];

【问题讨论】:

您是否在应用中添加了传输安全性 你的意思是 NSAppTransportSecurityNSAllowsArbitraryLoads @Anbu.Karthik 是的,dataWithContentsOfURL 在主线程中工作,所以你需要等待延迟 你能打印这个STR_final 答案是问题中的STR_url 【参考方案1】:

您可以使用以下代码来解决您的问题。 这是您可以找到 SDWebImageView 的类文件的链接。 https://github.com/rs/SDWebImage

 NSString* UserImage=[NSString stringWithFormat:@"%@",[[UserFeedArray objectAtIndex:indexPath.row] valueForKey:@"profile"]];
      UserImage = [UserImage stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLFragmentAllowedCharacterSet]];
     [cell.UserProfilePic sd_setImageWithURL:[NSURL URLWithString:UserImage] placeholderImage:[UIImage imageNamed:@"logo"] options:SDWebImageRefreshCached];

【讨论】:

【参考方案2】:

当您想使用 URLWithString 进行初始化时,应正确编码参数。例如,如果要加载文件名中有空格的在线图像文件,则应使用 %20 进行转换。它会在浏览器中加载,因为浏览器会进行转换。

可以试试下面看看—— NSString *URLEscapedString = [STR_url stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];

【讨论】:

以上是关于为啥在 Web 浏览器中工作的 url 没有在 UIImageview 中加载的主要内容,如果未能解决你的问题,请参考以下文章

为啥在超级终端中工作的永久别名在 vs-code bash 终端中不起作用?

Firebase - 为啥不搜索在我的应用中工作的用户? (当用户输入两个字母时更新搜索控制器)

在 python 3 和 2 中工作的 Unicode 文字

在 Eclipse 中工作的 Web 应用程序给出了验证 EL 错误 org.apache.catalina.core.StandardWrapperValve 调用

在junit中工作的Spring启动监听器

关于管道如何在 Bash 中工作的简单解释是啥?