Java - 如果 src 有连字符,则无法从 Internet 下载图像
Posted
技术标签:
【中文标题】Java - 如果 src 有连字符,则无法从 Internet 下载图像【英文标题】:Java - Can't download image from internet if src has a hyphen 【发布时间】:2017-07-11 18:07:20 【问题描述】:我有一个程序,它涉及从该图像的 src 从 Internet 下载图像,它在大多数情况下都能完美运行,但是如果图像的 src 在地址中有一个“-”,我会得到一个 IOException。
BufferedImage image = null;
fileName = emailFirst + "_at_" + emailLast + " (" + fullName + ")";
URL url = new URL(imageUrl);
image = ImageIO.read(url);
System.out.println("DIRECTORY: " + directory);
ImageIO.write(image, "jpg", new java.io.File(directory + "\\" + fileName + ".jpg"));
唯一无法正常工作的情况是 url 有连字符,例如“wp-content”中的这个链接
https://www.applicoinc.com/wp-content/uploads/2016/04/Employee_Alex_Moazed.jpg
有什么想法吗?
【问题讨论】:
您可以编辑您的帖子并显示您获得的特定 IO 异常及其堆栈跟踪吗? 使用 URLEncoder 应该可以工作 【参考方案1】:如果您查看 URL
类的文档,您会看到这一点(强调我的)
URL 类本身不会根据 RFC2396 中定义的转义机制对任何 URL 组件进行编码或解码。调用方有责任对在调用 URL 之前需要转义的任何字段进行编码,并对从 URL 返回的任何转义字段进行解码。
要正确编码,您必须使用您的 URL 字符串初始化 URI
,并调用 toURL
方法来获取编码后的 URL。
【讨论】:
URLEncoder not 用于编码 URL 组件,尽管它的名称。 URLEncoder 用于使用application/x-www-form-urlencoded 对数据进行编码。这两种编码相似但不相同。要正确地对 URL 组件进行百分比编码,请创建一个 URI 并调用其 toURL 方法。 @VGR 你说的很对——我的速度有点太快了。我改变了答案。以上是关于Java - 如果 src 有连字符,则无法从 Internet 下载图像的主要内容,如果未能解决你的问题,请参考以下文章
如果在具有 Q_OBJECT 宏的类之外,则无法在 Qt Linguist 中获取字符串
如果通过 python selenium 和美丽的汤嵌套在视频内的源标签内,则无法抓取 src
如果 iframe src 无法加载,则捕获错误。错误:-“拒绝在框架中显示 'http://www.google.co.in/'..”