Java で URL または URI を構築するにはどうすればよいでしょうか? これを簡単に実行できる慣用的な方法やライブラリはありますか?
リクエスト文字列から開始し、さまざまな URL 部分 (スキーム、ホスト、パス、クエリ文字列) を解析/変更し、クエリ パラメータの追加と自動エンコードをサポートできるようにする必要があります。
ベストアンサー1
Apache HTTPコンポーネント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());