Câu hỏi Làm thế nào để sử dụng cURL trong Java?


Tôi là một newbie trong java và muốn sử dụng curl trong java. Câu hỏi của tôi là curl được xây dựng trong java hoặc tôi phải cài đặt nó từ bất kỳ nguồn bên thứ 3 nào để 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ự giúp đỡ. Hy vọng bất cứ ai có thể giúp tôi ra khỏi đó.

Cảm ơn trước.


76
2018-04-06 17:37


gốc


Bạn đang cố làm gì vậy? - skaffman
@skaffman: Chưa có gì. Tôi là một lập trình viên PHP, người gần đây đang thử java. Vì vậy, tự nhiên tôi rất quen với việc cuộn tròn. Vì vậy, trong khi làm việc trên java như một người mới, câu hỏi này xuất hiện trong tâm trí của tôi, vẫn còn tò mò nhưng tôi chắc chắn trong tương lai gần tôi sẽ cần nó. Nếu bất cứ ai biết bất kỳ thay thế tốt hơn của curl trong java, sau đó xin vui lòng cũng chia sẻ. Nó sẽ rất rất hữu ích. Cảm ơn. - sparrow
Rất gần với stackoverflow.com/questions/116650/curl-equivalent-in-java - Pascal Thivent
Tôi hỏi bởi vì CURL thực hiện một loạt các công cụ, một số trong đó được xây dựng trong Java, một số trong đó không phải là. Các yêu cầu cụ thể hơn sẽ giúp ích rất nhiều ở đây. - skaffman


Các câu trả lời:


Bạn có thể tận dụng java.net.URL và / hoặc java.net.URLConnection.

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

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

Xem thêm Hướng dẫn đơn giản của Oracle Về chủ đề này. Tuy nhiên đó là một chút tiết. Để kết thúc với mã tiết ngắn hơn, bạn có thể cân nhắc Apache HttpClient thay thế.

Nhân tiện: nếu câu hỏi tiếp theo của bạn là "Cách 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, đừng dùng regex cho cái này".

Xem thêm:


121
2018-04-06 17:41



@ 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 bất cứ điều gì thay thế tốt hơn của curl trong java, mà sẽ cung cấp chức năng tương tự như curl? Cảm ơn một lần nữa. - sparrow
Như đã đề cập, HttpClient là "giải pháp thay thế tốt hơn". Bạn có thể thực tế làm mọi thứ với URLConnection, bạn phải biết và hiểu 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 / sự nhầm lẫn, thay vì quên đi PHP và đưa ra 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. PS: Tôi làm cả hai, vì vậy tôi kể từ kinh nghiệm. - BalusC
Vì điều này và những người khác đã đề cập đến việc 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 bạn gộp thư viện gốc cho mọi nền tảng bạn muốn hỗ trợ và sớm hay muộn ai đó sẽ phàn nàn rằng nó không hoạt động trên máy Mac cũ hoặc máy trạm SGI cũ của họ. - vickirk
bạn không nghĩ rằng, bắt khối luôn luôn trông đẹp với khối thử: D - Muhammad Suleman
@MuhammadSuleman: mới đối với Java7? - BalusC


Một số người đã đề cập HttpURLConnection, URL và URLConnection. Nếu bạn cần tất cả các điều khiển và các tính năng bổ sung mà thư viện curl cung cấp cho bạn (và nhiều hơn nữa), tôi khuyên bạn nên Apache's httpclient.


3
2018-04-06 18:49





Các Thời gian chạy đối tượng cho phép bạn thực thi 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, vì các câu trả lời khác cho biết có thể là 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.


2
2018-04-06 17:48





Sử dụng libs chuẩn java, tôi khuyên bạn nên xem lớp HttpUrlConnection http://java.sun.com/javase/6/docs/api/java/net/HttpURLConnection.html

Nó có thể xử lý hầu hết những gì curl có thể làm với việc thiết lập kết nối. Những gì bạn làm với luồng tùy thuộc vào bạn.


1
2018-04-06 17:42





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 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 (mà là tẻ nhạt để mã trên của riêng bạn)


1
2018-04-06 17:42



Đẹp, nhưng Commons Net đi một chút (quá nhiều) xa hơn curl. - BalusC
Cảm ơn bạn về thông tin - Allan L