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 );
我想在默认浏览器中使用上面的代码打开给定的链接,但它说url无效...我尝试转义字符,如'但是它不起作用。 如果我替换String arg =“www.google.com”;然后没有问题,我可以打开google.com。 请帮忙。
答案 0 :(得分:3)
根据RFC 2396,您的字符串包含URI中无效的字符。您需要正确编码查询参数。许多实用程序都支持此功能,例如标准URLEncoder(较低级别),JAX-RS UriBuilder,Spring UriUtils,Apache HttpClient URLEncodedUtils等。
编辑:哦,URI类也可以处理它,但你必须使用different constructor:
URI uri = new URI("http", "foo.com", null, "a=<some garbage>&b= |{$0m3 m0r3 garbage}| &c=imokay", null);
System.out.println(uri);
输出:
http://foo.com?a=%3Csome%20garbage%3E&b=%20%7C%7B$0m3%20m0r3%20garbage%7D%7C%20&c=imokay
虽然丑陋,但却是正确的表现形式。
答案 1 :(得分:2)
那是因为 无效。 <URLRequest Method='GetByUID' />
应替换为id
的值,或者返回可以与id
字符串连接的arg
的表达式。像
String arg="http://www.example.com/user.php?id="+getByUID(someUid);
答案 2 :(得分:1)
import java.net.URL;
import java.net.URLEncoder;
class ARealURL {
public static void main(String[] args) throws Exception {
String s1 = "http://www.example.com/user.php?id=";
String param = "<URLRequest Method='GetByUID' />";
String encodedParam = URLEncoder.encode(param,"UTF-8");
URL url = new URL(s1+encodedParam);
System.out.println(url);
}
}
http://www.example.com/user.php?id=%3CURLRequest+Method%3D%27GetByUID%27+%2F%3E