我正在尝试在默认浏览器中打开一个链接。我使用了以下代码。
String myUrl = "http://www.example.com/engine/myProcessor.jsp?Type=A Type&Name=1100110&Char=!";
try {
Desktop.getDesktop().browse(new URI(myUrl));
} catch (IOException err) {
setTxtOutput("Error: "+err.getMessage());
} catch (URISyntaxException err) {
setTxtOutput("Error: "+err.getMessage());
} catch (Exception err) {
setTxtOutput("Error: "+err.getMessage());
}
我收到 URISyntaxException 索引中的非法字符
我认为这是因为我的网址中包含?,& 和!等字符。我尝试使用:
URLEncoder.encode(myUrl, "UTF-8");
但这给了我另一个错误。
Failed to open http%3A%2F%2Fwww.example.com%2F...........
The system cannot find the file specified.
请告诉我如何纠正 URISyntaxException非法字符错误。
答案 0 :(得分:3)
您不应对整个URL进行编码,因为URI类需要有效的协议。仅对参数进行编码
myUrl = "http://www.example.com/engine/myProcessor.jsp?" + URLEncoder.encode("Type=A Type&Name=1100110&Char=!", "UTF-8");
答案 1 :(得分:2)
您可以使用以下代码段
public static String encode(String queryParameter) {
try {
String encodedQueryParameter = URLEncoder.encode(queryParameter, "UTF-8");
return encodedQueryParameter;
} catch (UnsupportedEncodingException e) {
return "Issue while encoding" + e.getMessage();
}
}
答案 2 :(得分:1)
这是因为这里有空格...jsp?Type=A Type&...
,您可以将其替换为+
http://www.example.com/engine/myProcessor.jsp?Type=A+Type&Name=1100110&Char=!"
答案 3 :(得分:0)
将URL中的空格替换为+ like如果url包含category = Adult Care,则将其替换为category = Adult + Care。
答案 4 :(得分:0)
以下代码对我有用:
{{1}}