作者:文女2010_532 | 来源:互联网 | 2023-09-25 19:56
如何在Java中构建URL或URI?是否有惯用的方式,或者很容易做到这一点的库?我需要允许从请求字符串开始,解析更改各种URL部分(方案,主机,路径,查询字符串)并支持添加和自动编
如何在Java中构建URL或URI?是否有惯用的方式,或者很容易做到这一点的库?
我需要允许从请求字符串开始,解析/更改各种URL部分(方案,主机,路径,查询字符串)并支持添加和自动编码查询参数.
解决方法:
截至Apache HTTP Component HttpClient 4.1.3,来自官方tutorial:
public class HttpClientTest {
public static void main(String[] args) throws URISyntaxException {
List qparams = new ArrayList();
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());