为什么我会得到;java.net.MalformedURLException:找不到协议;?
7-07 22:02:03.282:21811之前: "https://s3-sa-east-1.amazonaws.com/inradar.media/uploads/ads/ad-60cd15be59b21725e45c5cf388065527.jpg" 07-07 22:02:03.282:21811之后: “” 07-07 22:02:03.282:图像错误(21811): java.net.MalformedURLException:未找到协议: “”为什么我会得到;java.net.MalformedURLException:找不到协议;?,java,android,Java,Android,7-07 22:02:03.282:21811之前: "https://s3-sa-east-1.amazonaws.com/inradar.media/uploads/ads/ad-60cd15be59b21725e45c5cf388065527.jpg" 07-07 22:02:03.282:21811之后: “” 07-07 22:02:03.282:图像错误(21811): java.net.MalformedURLException:未找到协议: “” 我不知道有哪个记录器会在给定的日
我不知道有哪个记录器会在给定的日志消息中添加引号。因此,我将假设您的
url
字符串
是
@Override
protected Drawable doInBackground(String... params) {
try{
String url = params[0].replace("\\", "");
Log.v("before", params[0]);
Log.v("after", url);
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
}catch (Exception e) {
Log.e("Image Error", e.toString());
return null;
}
}
URL
构造函数无法解析该值。去掉前导引号和尾随引号。引号是字符串的一部分还是日志的一部分?我不确定。我用引号尝试了你的url,我得到了同样的异常。@SotiriosDelimanolis如果你硬编码,它会工作。“可能是因为绳子逃逸了。”帕特里克说得对。因此,字符串中的转义字符只对String
literals(即源代码中硬编码的字符串值)重要。转义字符在运行时被删除(转换为值)。日志中的值是内存中的字符串。它似乎包含前导引号和结尾引号。
“。这将导致URL解析器失败。@Patrick theString
literal(即在源代码中)String URL=“\”http:\”;
在运行时具有String
值”http:
。如果您的问题涉及类似于JSON数组的内容,请参见[“value1,“value2”]
,答案取决于解析器。正确的解析器将确定元素是JSON字符串,并在一个数组中生成两个String
对象,其值分别为value1
和value2
。
"https://s3-sa-east-1.amazonaws.com/inradar.media/uploads/ads/ad-60cd15be59b21725e45c5cf388065527.jpg"