JavaでURLまたはURIを作成する慣用的な方法は何ですか? 質問する

JavaでURLまたはURIを作成する慣用的な方法は何ですか? 質問する

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());

おすすめ記事