Java中的URL格式

Raj*_*pta 0 java

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。请帮忙。

Rya*_*art 5

根据RFC 2396,您的字符串包含在 URI 中无效的字符。您需要正确编码查询参数。许多实用程序都支持它,例如标准的URLEncoder(较低级别)、JAX-RS UriBuilderSpring 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)

虽然丑陋,但这是正确的表示。