Java에서 URL 또는 URI를 구성하는 관용적인 방법은 무엇입니까?
Java에서 URL 또는 URI를 작성하려면 어떻게 해야 하나요?이것을 쉽게 할 수 있는 관용적인 방법이나 도서관이 있나요?
요청 문자열부터 시작하여 다양한 URL 부분(스킴, 호스트, 경로, 쿼리 문자열)의 해석/변경 및 쿼리 파라미터 추가 및 자동 부호화를 지원해야 합니다.
Apache HTTP Component HttpClient 4.1.3의 경우 공식 튜토리얼:
public class HttpClientTest {
public static void main(String[] args) throws URISyntaxException {
List<NameValuePair> qparams = new ArrayList<NameValuePair>();
qparams.add(new BasicNameValuePair("q", "httpclient"));
qparams.add(new BasicNameValuePair("btnG", "Google Search"));
qparams.add(new BasicNameValuePair("aq", "f"));
qparams.add(new BasicNameValuePair("oq", null));
URI uri = URIUtils.createURI("http", "www.google.com", -1, "/search",
URLEncodedUtils.format(qparams, "UTF-8"), null);
HttpGet httpget = new HttpGet(uri);
System.out.println(httpget.getURI());
//http://www.google.com/search?q=httpclient&btnG=Google+Search&aq=f&oq=
}
}
편집: v4.2 현재URIUtils.createURI()
을 위해 폐지되었다URIBuilder
:
URI uri = new URIBuilder()
.setScheme("http")
.setHost("www.google.com")
.setPath("/search")
.setParameter("q", "httpclient")
.setParameter("btnG", "Google Search")
.setParameter("aq", "f")
.setParameter("oq", "")
.build();
HttpGet httpget = new HttpGet(uri);
System.out.println(httpget.getURI());
저자로서는 URL/URI 빌더가 좋은지 판단할 수 있는 최적의 사람은 아닐지도 모르지만, 여기 https://github.com/mikaelhg/urlbuilder가 있습니다.
JDK 이외의 의존 관계가 없는 가장 심플한 완전한 솔루션을 원했기 때문에 독자적인 솔루션을 도입할 필요가 있었습니다.
HTTP Client를 사용하면 올바르게 동작.
protected static String createUrl(List<NameValuePair> pairs) throws URIException{
HttpMethod method = new GetMethod("http://example.org");
method.setQueryString(pairs.toArray(new NameValuePair[]{}));
return method.getURI().getEscapedURI();
}
URI 구축에 도움이 되는 라이브러리는 많이 있습니다(수레바퀴를 다시 만들지 마십시오).시작하기 위한 세 가지 방법은 다음과 같습니다.
자바 EE 7
import javax.ws.rs.core.UriBuilder;
...
return UriBuilder.fromUri(url).queryParam(key, value).build();
org.module을 클릭합니다.http 컴포넌트: http client: 4.5.2
import org.apache.http.client.utils.URIBuilder;
...
return new URIBuilder(url).addParameter(key, value).build();
org. spring framework: 스프링 웹: 4.2.5.RELEASE
import org.springframework.web.util.UriComponentsBuilder;
...
return UriComponentsBuilder.fromUriString(url).queryParam(key, value).build().toUri();
다음 항목도 참조하십시오. GIST > URI Builder 테스트
OkHttp 사용
2022년인데 GitHub에 41K번 출연한 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 클래스를 제안했다는 비난을 받은 후.해설자의 조언을 듣고 대신 URI 수업을 제안하겠습니다.클래스는 한번 생성되면 매우 불변하기 때문에 URI의 컨스트럭터를 자세히 살펴보시기 바랍니다.
이 컨스트럭터를 사용하면 URI에서 필요한 모든 것을 설정할 수 있다고 생각합니다.
URI(String scheme, String userInfo, String host, int port, String path, String query, String fragment)
Constructs a hierarchical URI from the given components.
언급URL : https://stackoverflow.com/questions/883136/what-is-the-idiomatic-way-to-compose-a-url-or-uri-in-java
'sourcecode' 카테고리의 다른 글
부모 페이지에서 iframe 내의 JavaScript 코드 호출 (0) | 2022.10.27 |
---|---|
Android Recycleer View 스크롤 성능 (0) | 2022.10.27 |
"pip install --user..."의 목적은 무엇입니까? (0) | 2022.10.27 |
PDO:: 날짜의 PARAM? (0) | 2022.10.27 |
MariaDB / Galera - 정지 노드 전체 3개 노드 클러스터 동결 (0) | 2022.10.27 |