Java로 URL 인코딩
-
Java에서
URLEncoder
를 사용하여 URL 인코딩 -
Java에서
URL
,URI
및toASCIIString()
을 사용하여 URL 인코딩 -
Java에서
URIBuilder
를 사용하여 URL 인코딩
URL은 ASCII 문자 집합에 포함되지 않은 문자를 포함 할 수 없습니다. 인터넷을 통해 URL을 보내려는 경우 공백과 같은 문자를 추가 할 수 없습니다. 이것이 잘못된 문자를 더하기 기호 또는 백분율 기호와 같은 유효한 문자로 대체하기 위해 인코딩을 사용하는 이유입니다. 아래 예제 프로그램에서 다른 방법을 사용하여 URL을 인코딩하는 방법을 볼 수 있습니다.
Java에서URLEncoder
를 사용하여 URL 인코딩
유틸리티 클래스URLEncoder
는 주어진 URL을application/x-www-form-urlencoded
형식으로 인코딩하는 데 도움이됩니다. 아래에서는 공백으로 구분 된 세 단어가 포함 된q
문자열을 사용합니다.
URL 끝에q
를 연결하면 유효한 URL에 공백이 없기 때문에 잘못된 URL이됩니다. 이 문제를 해결하기 위해 두 개의 인수를 허용하는URLEncoder.encode()
메소드를 사용하여q
를 인코딩합니다. 첫 번째는 쿼리 문자열q
이고 두 번째는 사용할charset
입니다.
URLEncoder.encode()
메소드는 URL 끝에 쿼리로 연결하는 문자열을 반환합니다. 마지막 문자열encodedUrl
을 인쇄하면 유효한 전체 URL이 표시되고 더하기 기호가 공백을 대체합니다.
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
public class EncodeUrl {
public static void main(String[] args) {
String q = "learn java language";
String encodedUrl = "www.google.com/search?q=" + URLEncoder.encode(q, StandardCharsets.UTF_8);
System.out.println("Encoded Url: " + encodedUrl);
}
}
출력:
Encoded Url: www.google.com/search?q=learn+java+language
Java에서URL
,URI
및toASCIIString()
을 사용하여 URL 인코딩
Java의URL
클래스는 URL을 구성하고 URL에 대한 정보를 얻을 수있는 몇 가지 유용한 메소드를 제공합니다. URL
객체를 반환하는 URL을 만듭니다. 다음으로URI
클래스의 생성자를 호출하고 인증 세부 사항이 포함 된getUserInfo()
메소드를 사용하여(https/http)
및userinfo
프로토콜과 같은 URL 정보를 전달합니다.
이제getHost()
메소드를 사용하여 호스트를 가져와 유니 코드에서 ASCII 호환 인코딩 (ACE)으로 변환합니다. 다음 인수는getPort()
메소드를 사용하여 가져온 포트입니다. 그러면 URI의 경로를 얻습니다. 마지막 두 인수는 쿼리와 참조입니다.
모든 인수가URI
생성자로 전달되면URI
객체를 반환합니다. 이 객체는toASCIIString()
메소드를 사용하여 ASCII 문자열로 변환하는URI
유형입니다.
import java.net.*;
public class EncodeUrl {
public static void main(String[] args) throws MalformedURLException {
String q = "learn java language";
URL urlToEncode = new URL("https://www.google.com/search?q=" + q);
try {
URI uri = new URI(urlToEncode.getProtocol(), urlToEncode.getUserInfo(),
IDN.toASCII(urlToEncode.getHost()), urlToEncode.getPort(), urlToEncode.getPath(),
urlToEncode.getQuery(), urlToEncode.getRef());
String finalEncodedUrl = uri.toASCIIString();
System.out.println("Encoded Url: " + finalEncodedUrl);
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
}
출력:
Encoded Url: https://www.google.com/search?q=learn%20java%20language
Java에서URIBuilder
를 사용하여 URL 인코딩
이 예에서는 네이티브 메서드 대신 Apache HttpClient
라이브러리를 사용합니다. 프로젝트에 라이브러리를 포함하기 위해 다음 종속성을 사용합니다.
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
org.apache.http.client.utils
패키지의URIBuilder
클래스를 사용합니다. URIBuilder
객체를 만들고 생성자에urlToEncode
클래스를 전달합니다. 다음으로,uriBuilder.addParameter()
메소드를 사용하여 쿼리q
를 매개 변수로 추가하고 쿼리 매개 변수와 해당 값을 전달합니다.
결국 전체 인코딩 된 URL을 표시하는 문자열로UriBuilder
를 인쇄합니다.
import java.net.*;
import org.apache.http.client.utils.URIBuilder;
public class EncodeUrl {
public static void main(String[] args) throws MalformedURLException {
String q = "learn java language";
String urlToEncode = "https://www.google.com/search";
try {
URIBuilder uriBuilder = new URIBuilder(urlToEncode);
uriBuilder.addParameter("q", q);
System.out.println("Encoded Url: " + uriBuilder.toString());
} catch (URISyntaxException e) {
e.printStackTrace();
}
}
}
출력:
Encoded Url: https://www.google.com/search?q=learn+java+language
Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn