Crea URL in java


Cercando di costruire http://IP:4567/foldername/1234?abc=xyz. Non ne so molto, ma ho scritto sotto il codice dalla ricerca da Google:

import java.net.MalformedURLException;
import java.net.URI;
import java.net.URL;

public class MyUrlConstruct {

    public static void main(String a[]){

        try {
            String protocol = "http";
            String host = "IP";
            int port = 4567;
            String path = "foldername/1234";
            URL url = new URL (protocol, host, port, path);
            System.out.println(url.toString()+"?");
        } catch (MalformedURLException ex) {
            ex.printStackTrace();
        }
    }
}

Sono in grado di creare URL http://IP:port/foldername/1234?. Sono bloccato alla parte di query. Ti prego, aiutami ad andare avanti.

Author: px06, 2016-09-14

3 answers

In termini generali non Java, un URL è un tipo specializzato di URI. Puoi usare la classe URI (che è più moderna della venerabile classe URL, che esiste da Java 1.0) per creare un URI in modo più affidabile, e puoi convertirlo in un URL con il metodo toURL di 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();

Si noti che il path deve iniziare con una barra.

 6
Author: VGR, 2016-09-14 21:49:55

Puoi semplicemente passare le specifiche raw

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

Oppure puoi prendere qualcosa di simile org.apache.http.client.utils.URIBuilder e costruirlo in modo sicuro con una corretta codifica url

URIBuilder builder = new URIBuilder()
builder.setScheme("http")
builder.setHost("IP")
builder.setPath("/foldername/1234")
builder.addParameter("abc", "xyz")
URL url = builder.build().toURL()
 33
Author: vsminkov, 2016-09-14 22:35:40

Usa OkHttp

C'è una libreria molto popolare chiamata OkHttpche è stata interpretata 20K volte su GitHub. Con questa libreria, puoi creare l'URL come di seguito:

import okhttp3.HttpUrl;

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

Oppure puoi semplicemente analizzare un URL:

URL url = HttpUrl.parse("http://example.com:4567/foldername/1234?abc=xyz").url();
 14
Author: Tyler Long, 2017-05-25 14:59:28