Java에서 cURL을 사용하는 방법은 무엇입니까?


92

저는 자바의 초보자이고 자바에서 curl을 사용하고 싶었습니다. 내 질문은 자바에 내장 된 curl 또는 Java와 함께 사용하려면 타사 소스에서 설치해야합니다. 그렇다면 Java에서 curl을 설치하는 방법. 나는 오랫동안 인터넷 검색을 해왔지만 도움을 찾지 못했습니다. 누구든지 나를 도울 수 있기를 바랍니다.

미리 감사드립니다.


@skaffman : 아직 아무것도 없습니다. 저는 최근에 Java를 사용하는 PHP 프로그래머입니다. 그래서 자연스럽게 나는 컬에 매우 익숙합니다. 그래서 초보자로서 자바를 작업하는 동안,이 질문은 여전히 ​​호기심에서 떠오르지 만 가까운 장래에 이것이 필요할 것이라고 확신합니다. 누구든지 Java에서 curl의 더 나은 대안을 알고 있다면 공유하십시오. 매우 도움이 될 것입니다. 감사.
moshfiqur 2010


나는 CURL이 모든 것을 수행하기 때문에 질문한다. 그 중 일부는 Java에 내장되어 있고 일부는 그렇지 않다. 더 구체적인 요구 사항은 여기에서 많은 도움이 될 것입니다.
skaffman

답변:


138

java.net.URL및 / 또는 을 사용할 수 있습니다 java.net.URLConnection.

URL url = new URL("https://stackoverflow.com");

try (BufferedReader reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"))) {
    for (String line; (line = reader.readLine()) != null;) {
        System.out.println(line);
    }
}

주제에 대한 Oracle의 간단한 자습서 도 참조하십시오 . 그러나 약간 장황합니다. 덜 장황한 코드로 끝내려면 대신 Apache HttpClient 를 고려할 수 있습니다 .

그건 그렇고, 다음 질문이 "HTML 결과를 처리하는 방법?"이면 대답은 " HTML 파서를 사용합니다 . 아니요, 정규식을 사용하지 마십시오 ."입니다.

또한보십시오:


@BalusC : 감사합니다. 제공 한 링크에서 몇 가지 연구를 수행합니다. btw, 컬과 같은 기능을 제공하는 자바에서 컬의 더 나은 대안을 알고 있습니까? 다시 한 번 감사드립니다.
moshfiqur 2010

7
언급했듯이 HttpClient는 "더 나은 대안"입니다. 실제로를 사용하여 모든 작업을 수행 URLConnection할 수 있지만 HTTP 사양을 알고 이해해야합니다. 그건 그렇고, PHP와 자바를 비교하지 마십시오. 그것은 사과와 오렌지와 같습니다. 자기 문제 / 혼란을 피하려면 PHP를 잊어 버리고 Java에 대한 새로운 시각을 두십시오. 완전히 다른 이데올로기를 가진 언어입니다. PS : 두 가지를 모두 수행하므로 경험을 통해 말합니다.
BalusC 2010

이것과 다른 사람들이 언급했듯이 HttpClient를 사용하십시오. libcurl 사용을 피하는 것이 좋습니다. 지원하려는 모든 플랫폼에 대해 기본 라이브러리를 번들로 제공해야하며 조만간 누군가가 이전의 파워 맥 또는 SGI 워크 스테이션에서 작동하지 않는다고 불평 할 것입니다.
vickirk 2010

당신이 생각하지 않는다 catch 블록은 항상 try 블록에 좋은 보이는 : D
무하마드 술맨

아 ... 이제 알겠습니다. 중첩 된 try / catch가 필요한 곳에 이러한 유형의 코드를 사용할 수 있습니다. 내 실수 미안해!
Muhammad Suleman 2015


4

런타임 객체는 자바에서 외부 명령 줄 응용 프로그램을 실행할 수 있으므로 다른 답변은 당신이 뭘 하려는지 할 수있는 더 좋은 방법은 아마도이 표시 당신이 그러나 컬을 사용할 수있다. 파일을 다운로드하기 만하면 URL 개체가 잘 작동합니다.



3

Curl은 Java가 아닌 프로그램이며 Java 프로그램 외부에서 제공되어야합니다.

필요한 "전송 재개"와 같은 특정 기능이없는 한 Jakarta Commons Net을 사용하면 많은 기능을 쉽게 얻을 수 있습니다 (자신의 코드 작성이 지루함).


좋지만 Commons Net은 컬보다 약간 (너무 많이) 더 나아갑니다.
BalusC 2010

2

런타임 을 사용 하여 Curl을 호출 하십시오 . 이 코드는 Ubuntu와 Windows 모두에서 작동합니다.

String[] commands = new String {"curl", "-X", "GET", "http://checkip.amazonaws.com"};
Process process = Runtime.getRuntime().exec(commands);
BufferedReader reader = new BufferedReader(new 
InputStreamReader(process.getInputStream()));
String line;
String response;
while ((line = reader.readLine()) != null) {
    response.append(line);
}
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.