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.