在 java 中构建 URL使用 OkHttp

2022-08-31 22:40:31

正在尝试构建 .我不太了解它,但我从谷歌搜索中写了下面的代码:http://IP:4567/foldername/1234?abc=xyz

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

我能够建立网址。我被困在查询部分。请帮助我向前迈进。http://IP:port/foldername/1234?


答案 1

你可以通过原始规格

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

或者你可以使用像 org.apache.http.client.utils.URIBuilder 这样的东西,并使用正确的 url 编码以安全的方式构建它。

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

答案 2

使用 OkHttp

有一个非常流行的库,名为OkHttp,它在GitHub上被加了20K次。使用此库,您可以构建如下所示的url:

import okhttp3.HttpUrl;

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

或者,您可以简单地解析一个 URL:

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