Criar um URL em java

A tentar construir. Eu não sei muito sobre isso, mas eu escrevi abaixo o código de pesquisa do 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();
        }
    }
}

Sou capaz de construir o URL http://IP:port/foldername/1234?. Estou preso à parte da consulta. Por favor, ajude-me a seguir em frente.

Author: px06, 2016-09-14

3 answers

Em termos gerais não-Java, um URL é um tipo especializado de URI. Você pode usar a classe URI (que é mais moderna do que a venerável classe URL, que existe desde Java 1.0) Para criar um URI de forma mais fiável, e você pode convertê-lo para um URL com o método toURL do 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 que o path tem de começar com uma barra.

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

Podes passar o spec bruto

new URL("http://IP:4567/foldername/1234?abc=xyz");
Ou podes tomar algo como org.apache.http.client.utils.URIBuilder e construi - lo de forma segura com a codificação de url apropriada
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

Utilizar O OkHttp

Existe uma biblioteca muito popular chamada OkHttp que foi estrelada 20K vezes no GitHub. Com esta biblioteca, poderá criar o url abaixo:

import okhttp3.HttpUrl;

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

Ou pode simplesmente processar um URL:

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