String arg="http://www.example.com/user.php?id=<URLRequest Method='GetByUID' />";
java.net.URI uri = new java.net.URI( arg );
java.awt.Desktop desktop = java.awt.Desktop.getDesktop();
desktop.browse( uri );
Run Code Online (Sandbox Code Playgroud)
我想用上面的代码在默认浏览器中打开给定的链接,但它说 url 无效......我也尝试转义像 ' 这样的字符,但它不起作用。如果我替换 String arg="www.google.com"; 那么就没有问题了,我可以打开 google.com。请帮忙。
根据RFC 2396,您的字符串包含在 URI 中无效的字符。您需要正确编码查询参数。许多实用程序都支持它,例如标准的URLEncoder(较低级别)、JAX-RS UriBuilder、Spring UriUtils、Apache HttpClient URLEncodedUtils等。
编辑:哦,URI 类也可以处理它,但是您必须使用不同的构造函数:
URI uri = new URI("http", "foo.com", null, "a=<some garbage>&b= |{$0m3 m0r3 garbage}| &c=imokay", null);
System.out.println(uri);
Run Code Online (Sandbox Code Playgroud)
输出:
http://foo.com?a=%3Csome%20garbage%3E&b=%20%7C%7B$0m3%20m0r3%20garbage%7D%7C%20&c=imokay
Run Code Online (Sandbox Code Playgroud)
虽然丑陋,但这是正确的表示。
| 归档时间: |
|
| 查看次数: |
15185 次 |
| 最近记录: |