Android java.IOException:索引0处主机名中的非法字符
我想知道是否有人能在这方面帮助我。这是关于android开发的 我用这个图片链接为例。 我使用inputstream来获取图像内容Android java.IOException:索引0处主机名中的非法字符,java,android,Java,Android,我想知道是否有人能在这方面帮助我。这是关于android开发的 我用这个图片链接为例。 我使用inputstream来获取图像内容 InputStream is = (InputStream) new URL("http://soompi_images.s3.amazonaws.com/4b1d3d685350b3ee612d098fda7e7441_large.jpg") .openStream(); 这是为了从我的绘图设备的图像链接中获取图像 但是,我在索引0的主机名处获
InputStream is =
(InputStream) new URL("http://soompi_images.s3.amazonaws.com/4b1d3d685350b3ee612d098fda7e7441_large.jpg")
.openStream();
这是为了从我的绘图设备的图像链接中获取图像
但是,我在索引0的主机名处获取非法字符
我尝试过htmlEncode,但它不起作用。所以我希望有人能帮助我
谢谢。我就是这么做的:
private Bitmap LoadImage(String URL, BitmapFactory.Options options) //
{
Bitmap bitmap = null;
InputStream in = null;
try //
{
in = OpenHttpConnection(URL);
bitmap = BitmapFactory.decodeStream(in, null, options);
in.close();
} //
catch (Exception ex) //
{
Logger.LogError("LoadImage", ex);
return null;
}
return bitmap;
}
private InputStream OpenHttpConnection(String strURL) throws IOException //
{
InputStream inputStream = null;
URL url = new URL(strURL);
URLConnection conn = url.openConnection();
try //
{
HttpURLConnection httpConn = (HttpURLConnection) conn;
httpConn.setRequestMethod("GET");
httpConn.connect();
if (httpConn.getResponseCode() == HttpURLConnection.HTTP_OK) {
inputStream = httpConn.getInputStream();
}
} //
catch (Exception ex) //
{
return null;
}
return inputStream;
}
希望这有帮助 Java URL类无法解析带有下划线的主机名,例如*soompi\u图像*
Pheonixblade9是一个非常好的解决方案。真正的答案是不要在URL中使用无效的主机名。您不能指望任何无效的主机名能够可靠地工作
String url = "http://soompi_images.s3.amazonaws.com/4b1d3d685350b3ee612d098fda7e7441_large.jpg";
url = url.replace("soompi_images.s3.amazonaws.com", "s3.amazonaws.com/soompi_images");
InputStream is = (InputStream) new URL(url).openStream();
Internet标准要求对协议进行注释,要求组件主机名标签只能包含ASCII字母“a”到“z”,不区分大小写,数字“0”到“9”,以及连字符“-”。RFC 952中主机名的原始规范规定,标签不能以数字或连字符开头,也不能以连字符结尾。然而,随后的规范RFC1123允许主机名标签以数字开头。不允许使用其他符号、标点符号或空白。
我应该如何解决这个问题?我试着把uu码改成ASCII码,但它也不起作用。下面的代码,由Pheonixblade9发布,对我有用。删除您尝试获取图像的代码,并用下面的代码替换它。该代码的工作方式不会因为try-and-catch而显示错误。但是,图像仍然没有显示。我正在寻找一种方法,我可以得到的形象。无论如何谢谢你!尝试单步执行代码。这是作为一名开发人员的一部分,调试代码,让他们尝试在您的情况下工作。我无法从中获得图像。无论如何谢谢你!到底是什么不起作用?这对我很有用。你需要确保你是在后台运行的,否则它会冻结你的应用程序。是的,它是在后台运行的。我的意思是,我仍然不能得到它的图像,因为我认为是因为下划线。但是,我无法更改url,因为它不是由我创建的。这会引发什么异常?在我的应用程序中,它可以很好地处理下划线。引发的异常是java.lang.NullPointerException。