web-dev-qa-db-fra.com

Construire l'URL dans java

Essayer de construire http://IP:4567/foldername/1234?abc=xyz. Je ne sais pas grand chose à ce sujet mais j'ai écrit le code ci-dessous à partir de 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();
        }
    }
}

Je suis capable de construire l'URL http://IP:port/foldername/1234?. Je suis coincé à la partie requête. S'il vous plaît, aidez-moi à avancer.

27
rrr ppp

En règle générale, une URL est un type d’URI spécialisé. Vous pouvez utiliser la classe URI (qui est plus moderne que la classe d'URL vénérable, qui existe depuis Java 1.0 ) pour créer un URI de manière plus fiable, et vous pouvez le convertir en URL avec la méthode toURL de l'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();

Notez que le path doit commencer par une barre oblique.

13
VGR

Vous pouvez simplement passer des spécifications brutes

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

Ou vous pouvez prendre quelque chose comme org.Apache.http.client.utils.URIBuilder et construisez-le de manière sécurisée avec un encodage d'URL correct

URIBuilder builder = new URIBuilder()
builder.setScheme("http")
builder.setHost("IP")
builder.setPath("/foldername/1234")
builder.addParameter("abc", "xyz")
URL url = builder.build().toURL()
48
vsminkov

Utilisez OkHttp

Il existe une bibliothèque très populaire appelée OkHttp qui a été sélectionnée 20K fois sur GitHub. Avec cette bibliothèque, vous pouvez construire l’URL comme ci-dessous:

import okhttp3.HttpUrl;

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

Ou vous pouvez simplement analyser une URL:

URL url = HttpUrl.parse("http://example.com:4567/foldername/1234?abc=xyz").url();
20
Tyler Long