如何在 Java 中使用编码 URIbuilder() 方法
how can I use encoding URIbuilder() method in Java
我在 JAVA 中使用了一些 API。
我需要在 URI 中使用韩语文本,请求是 String 变量。
如果我设置 request = "안녕하세요";
并使用代码:
final URI uri = new URIBuilder().setScheme("https").setHost(server + "api.net").setPath("/api/" + "/" + **request**).setParameters(param).build(). ;
如果我使用它,我会看到以下结果:
https://api.net/api/%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94?api_key
我已经尝试使用此代码:
final URI uri = new URIBuilder().setScheme("https").setHost(server + "api.net").setPath("/api/" + "/" + **URLEncoder.encode(request, "UTF-8")**).setParameters(param).build(). ;
但我得到了相同的结果。
我该如何解决这个问题?
您的 URI 已被编码。就像 URL,你不能使用特殊字符,如果你想检索 request
字符串,你必须解码你的 URI 的特定部分,像这样:
String result = java.net.URLDecoder.decode(uri.getPath(), "UTF-8");
System.out.println(result); // this will print "/api/안녕하세요"
RFC 3986, Uniform Resource Identifier (URI): Generic Syntax 确认:
A URI is a sequence of characters from a very limited set: the
letters of the basic Latin alphabet, digits, and a few special
characters.
后面说:
Percent-encoded octets [...] may be used within a URI to
represent characters outside the range of the US-ASCII coded character
set if this representation is allowed by the scheme or by the protocol
element in which the URI is referenced.
你得到的是那一堆字符。
希望你觉得这很有用。
我在 JAVA 中使用了一些 API。
我需要在 URI 中使用韩语文本,请求是 String 变量。
如果我设置 request = "안녕하세요";
并使用代码:
final URI uri = new URIBuilder().setScheme("https").setHost(server + "api.net").setPath("/api/" + "/" + **request**).setParameters(param).build(). ;
如果我使用它,我会看到以下结果:
https://api.net/api/%EC%95%88%EB%85%95%ED%95%98%EC%84%B8%EC%9A%94?api_key
我已经尝试使用此代码:
final URI uri = new URIBuilder().setScheme("https").setHost(server + "api.net").setPath("/api/" + "/" + **URLEncoder.encode(request, "UTF-8")**).setParameters(param).build(). ;
但我得到了相同的结果。
我该如何解决这个问题?
您的 URI 已被编码。就像 URL,你不能使用特殊字符,如果你想检索 request
字符串,你必须解码你的 URI 的特定部分,像这样:
String result = java.net.URLDecoder.decode(uri.getPath(), "UTF-8");
System.out.println(result); // this will print "/api/안녕하세요"
RFC 3986, Uniform Resource Identifier (URI): Generic Syntax 确认:
A URI is a sequence of characters from a very limited set: the letters of the basic Latin alphabet, digits, and a few special characters.
后面说:
Percent-encoded octets [...] may be used within a URI to represent characters outside the range of the US-ASCII coded character set if this representation is allowed by the scheme or by the protocol element in which the URI is referenced.
你得到的是那一堆字符。
希望你觉得这很有用。