Build URL in java

前端 未结 5 1479
故里飘歌
故里飘歌 2021-02-05 00:56

Trying to build http://IP:4567/foldername/1234?abc=xyz. I don\'t know much about it but I wrote below code from searching from google:

import java.n         


        
相关标签:
5条回答
  • 2021-02-05 01:11

    If using Spring Framework:

    UriComponentsBuilder.newInstance()
      .scheme(scheme)
      .host(host)
      .path(path)
      .build()
      .toUri()
      .toURL();
    

    A new UriComponentsBuilder class helps to create UriComponents instances by providing fine-grained control over all aspects of preparing a URI including construction, expansion from template variables, and encoding.

    Know more: https://www.baeldung.com/spring-uricomponentsbuilder

    JavaDoc: https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/util/UriComponentsBuilder.html

    0 讨论(0)
  • 2021-02-05 01:15

    If you happen to be using Spring already, I have found the org.springframework.web.util.UriComponentsBuilder to be quite nifty. Here is how you would use it in your case.

    final URL myUrl = UriComponentsBuilder
            .fromHttpUrl("http://IP:4567/foldername/1234?abc=xyz")
            .build()
            .toUri()
            .toURL();
    
    0 讨论(0)
  • 2021-02-05 01:28

    You can just pass raw spec

    new URL("http://IP:4567/foldername/1234?abc=xyz");
    

    Or you can take something like org.apache.http.client.utils.URIBuilder and build it in safe manner with proper url encoding

    URIBuilder builder = new URIBuilder();
    builder.setScheme("http");
    builder.setHost("IP");
    builder.setPath("/foldername/1234");
    builder.addParameter("abc", "xyz");
    URL url = builder.build().toURL();
    
    0 讨论(0)
  • 2021-02-05 01:30

    Use OkHttp

    There is a very popular library named OkHttp which has been starred 20K times on GitHub. With this library, you can build the url like below:

    import okhttp3.HttpUrl;
    
    URL url = new HttpUrl.Builder()
        .scheme("http")
        .host("example.com")
        .port(4567)
        .addPathSegments("foldername/1234")
        .addQueryParameter("abc", "xyz")
        .build().url();
    

    Or you can simply parse an URL:

    URL url = HttpUrl.parse("http://example.com:4567/foldername/1234?abc=xyz").url();
    
    0 讨论(0)
  • 2021-02-05 01:31

    In general non-Java terms, a URL is a specialized type of URI. You can use the URI class (which is more modern than the venerable URL class, which has been around since Java 1.0) to create a URI more reliably, and you can convert it to a URL with the toURL method of URI:

    String protocol = "http";
    String host = "example.com";
    int port = 4567;
    String path = "/foldername/1234";
    String auth = null;
    String fragment = null;
    URI uri = new URI(protocol, auth, host, port, path, query, fragment);
    URL url = uri.toURL();
    

    Note that the path needs to start with a slash.

    0 讨论(0)
提交回复
热议问题