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