Cách sử dụng cURL trong Java?


92

Tôi là một thành viên mới trong java và muốn sử dụng curl trong java. Câu hỏi của tôi là curl được tích hợp sẵn trong java hay tôi phải cài đặt nó từ bất kỳ nguồn nào của bên thứ 3 để sử dụng với Java. Nếu vậy, làm thế nào để cài đặt curl trong java. Tôi đã googling trong một thời gian dài nhưng không tìm thấy bất kỳ sự trợ giúp nào. Mong bất cứ ai có thể giúp tôi ngoài đó.

Cảm ơn trước.


@skaffman: Chưa có gì. Tôi là một Lập trình viên PHP, người gần đây đang dùng thử java. Vì vậy, tự nhiên tôi rất quen với việc uốn tóc. Vì vậy, khi mới làm quen với java, câu hỏi này nảy ra trong đầu tôi, vẫn không khỏi tò mò nhưng tôi chắc rằng trong tương lai gần, tôi sẽ cần nó. Nếu ai biết bất kỳ thay thế tốt hơn của curl trong java, thì cũng xin vui lòng chia sẻ. Nó sẽ rất hữu ích. Cảm ơn.
moshfiqur


Tôi hỏi vì CURL thực hiện rất nhiều thứ, một số trong số đó được tích hợp sẵn cho Java, một số thì không. Các yêu cầu cụ thể hơn sẽ giúp ích rất nhiều ở đây.
skaffman

Câu trả lời:


138

Bạn có thể tận dụng java.net.URLvà / hoặc 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);
    }
}

Cũng xem hướng dẫn đơn giản của Oracle về chủ đề này. Tuy nhiên, nó hơi dài dòng. Để kết thúc với mã ít dài dòng hơn, bạn có thể muốn xem xét Apache HttpClient để thay thế.

Nhân tiện: nếu câu hỏi tiếp theo của bạn là "Làm thế nào để xử lý kết quả HTML?", Thì câu trả lời là " Sử dụng trình phân tích cú pháp HTML . Không, không sử dụng regex cho việc này ".

Xem thêm:


@BalusC: Cảm ơn. Thực hiện một số nghiên cứu từ các liên kết bạn đã cung cấp. btw, bạn có biết điều gì thay thế tốt hơn cho curl trong java, sẽ cung cấp chức năng tương tự như curl không? Cảm ơn một lần nữa.
moshfiqur

7
Như đã đề cập, HttpClient là "giải pháp thay thế tốt hơn". Trên thực tế URLConnection, bạn có thể làm mọi thứ , nhưng bạn phải biết và hiểu các thông số kỹ thuật HTTP. Nhân tiện, đừng cố so sánh PHP với Java. Nó giống như táo và cam. Để tránh những rắc rối / bối rối cho bản thân, thay vì quên đi PHP và đặt một cái nhìn mới về Java. Đó là một ngôn ngữ với một hệ tư tưởng hoàn toàn khác. Tái bút: Tôi làm cả hai, vì vậy tôi kể từ kinh nghiệm.
BalusC

Như điều này và những người khác đã đề cập sử dụng HttpClient. Tôi thực sự khuyên bạn nên tránh sử dụng libcurl, bạn phải đảm bảo rằng bạn gói thư viện gốc cho mọi nền tảng mà bạn muốn hỗ trợ và sớm muộn gì cũng có người phàn nàn rằng nó không hoạt động trên máy trạm SGI hoặc mac nguồn cũ của họ.
vickirk

không bạn nghĩ, khối catch luôn có vẻ tốt đẹp với khối try: D
Muhammad Suleman

Ahh ... giờ tôi hiểu rồi. bạn có thể sử dụng loại mã này mà chúng ta sẽ cần thử / bắt lồng nhau. xin lỗi, là lỗi của tôi!
Muhammad Suleman


4

Các Runtime đối tượng cho phép bạn thực hiện các ứng dụng dòng lệnh bên ngoài từ Java và do đó sẽ cho phép bạn sử dụng cURL Tuy nhiên như các câu trả lời khác chỉ có thể là một cách tốt hơn để làm những gì bạn đang cố gắng làm. Nếu tất cả những gì bạn muốn làm là tải xuống một tệp, đối tượng URL sẽ hoạt động tốt.



3

Curl là một chương trình không phải java và phải được cung cấp bên ngoài chương trình Java của bạn.

Bạn có thể dễ dàng nhận được nhiều chức năng bằng cách sử dụng Jakarta Commons Net , trừ khi có một số chức năng cụ thể như "tiếp tục chuyển" bạn cần (điều này thật tẻ nhạt khi tự viết mã)


Đẹp, nhưng Commons Net đi xa hơn một chút (quá nhiều) so với cuộn tròn.
BalusC

2

Sử dụng Runtime để gọi Curl. Mã này hoạt động cho cả Ubuntu và 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);
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.