2

我想在 JAVA 中编码部分 URL 参数

http://statebuild-dev.com/iit-title/size.xml?id=(102T OR 140T)

http://statebuild-dev.com/iit-title/size.xml?id=(102%20OR%20140)

尝试过使用 URI 进行编码,但它也进行了编码?这是我不想要的。在 URL 中,我想对 '=' 之后的部分进行编码

URI uri = new URI("http", 
    "statebuild-dev.com/iit-title", "/size.xml?id=(102 OR 140)", null);
//URL url = uri.toURL();
System.out.println(uri.toString());
System.out.println(url1);

谢谢你

4

4 回答 4

3

您想在添加到 url 之前使用 URLEncoder 对每个查询参数进行编码,例如:

String encodedValue = URLEncoder.encode("(102 OR 140)", "UTF-8");
于 2012-06-08T14:22:34.883 回答
1

您使用了错误的构造函数。试试这个:

URI uri = new URI("http","statebuild-dev.com", "/iit-title/size.xml", "id=(102 OR 140)", null);

也可以看看java.net.URLEncoder

于 2012-06-08T14:17:09.457 回答
1

这个答案很好地讨论了对 URI/URL 的各个部分进行编码。您走在正确的轨道上,但您的具体问题是 URI 的各个部分都错误。您需要使用包含权限、路径、查询和片段的多部分构造函数:

URI uri = new URI("http", "statebuild-dev.com", "/iit-title/size.xml", "id=(102 or 104)", null);
System.out.println(uri.toString());
System.out.println(uri.toASCIIString());
于 2012-06-08T14:17:39.833 回答
0

java.net.URI类可以提供帮助;在您找到的 URL 文档中

请注意,URI 类在某些情况下会执行其组件字段的转义。管理 URL 编码和解码的推荐方法是使用 URI

检查这个线程

于 2012-06-08T14:17:14.983 回答