如何在 Java 中构建 URL 或 URI?有没有一种惯用的方法,或者可以轻松做到这一点的图书馆?
我需要允许从请求字符串开始,解析/更改各种 URL 部分(方案、主机、路径、查询字符串)并支持添加和自动编码查询参数。
原文由 jon077 发布,翻译遵循 CC BY-SA 4.0 许可协议
如何在 Java 中构建 URL 或 URI?有没有一种惯用的方法,或者可以轻松做到这一点的图书馆?
我需要允许从请求字符串开始,解析/更改各种 URL 部分(方案、主机、路径、查询字符串)并支持添加和自动编码查询参数。
原文由 jon077 发布,翻译遵循 CC BY-SA 4.0 许可协议
从 Apache HTTP Component HttpClient 4.1.3 开始,来自官方 教程:
public class HttpClientTest {
public static void main(String[] args) throws URISyntaxException {
List<NameValuePair> qparams = new ArrayList<NameValuePair>();
qparams.add(new BasicNameValuePair("q", "httpclient"));
qparams.add(new BasicNameValuePair("btnG", "Google Search"));
qparams.add(new BasicNameValuePair("aq", "f"));
qparams.add(new BasicNameValuePair("oq", null));
URI uri = URIUtils.createURI("http", "www.google.com", -1, "/search",
URLEncodedUtils.format(qparams, "UTF-8"), null);
HttpGet httpget = new HttpGet(uri);
System.out.println(httpget.getURI());
//http://www.google.com/search?q=httpclient&btnG=Google+Search&aq=f&oq=
}
}
编辑:从 v4.2 URIUtils.createURI()
开始,已弃用 URIBuilder
:
URI uri = new URIBuilder()
.setScheme("http")
.setHost("www.google.com")
.setPath("/search")
.setParameter("q", "httpclient")
.setParameter("btnG", "Google Search")
.setParameter("aq", "f")
.setParameter("oq", "")
.build();
HttpGet httpget = new HttpGet(uri);
System.out.println(httpget.getURI());
原文由 Chikei 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
使用 HTTPClient 效果很好。