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();
}
}
}
URL http://IP:port/foldername/1234?
を作成できます。クエリ部分で立ち往生しています。私が前進するのを助けてください。
一般的な非Javaの用語では、URLは特殊なタイプのURIです。 URI クラス(Java 1.0以来使用されている由緒あるURLクラスよりも新しい)を使用して、より確実にURIを作成できます。 URIの toURL メソッドを使用してURLに変換します。
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();
path
はスラッシュで始まる必要があることに注意してください。
そのままのスペックを渡すことができます
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()
GitHubでスター付き20K回された OkHttp という非常に人気のあるライブラリがあります。このライブラリを使用すると、次のような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();