Comment utiliser cURL en Java?

90

Je suis un débutant en java et je voulais utiliser curl en java. Ma question est curl intégré dans java ou je dois l'installer à partir de n'importe quelle source tierce pour l'utiliser avec Java. Si tel est le cas, comment installer curl en java. Je cherche depuis longtemps sur Google mais je n'ai trouvé aucune aide. J'espère que n'importe qui peut m'aider là-bas.

Merci d'avance.

moshfiqur
la source
@skaffman: Rien pour le moment. Je suis un programmeur PHP qui essaie récemment de java. Alors naturellement, je suis très habitué au curling. Donc, tout en travaillant sur Java en tant que novice, cette question me vient à l'esprit, toujours par curiosité mais je suis sûr que dans un proche avenir j'en aurai besoin. Si quelqu'un connaît une meilleure alternative à curl en java, veuillez également partager. Ce sera très très utile. Merci.
moshfiqur
Je demande parce que CURL fait tout un tas de choses, dont certaines sont intégrées à Java, d'autres non. Des exigences plus spécifiques aideraient beaucoup ici.
skaffman

Réponses:

136

Vous pouvez utiliser java.net.URLet / ou 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);
    }
}

Voir également le simple tutoriel d'Oracle sur le sujet. C'est cependant un peu verbeux. Pour finir avec un code moins détaillé, vous pouvez envisager Apache HttpClient à la place.

Au fait: si votre question suivante est "Comment traiter le résultat HTML?", Alors la réponse est " Utilisez un analyseur HTML . Non, n'utilisez pas de regex pour cela .".

Voir également:

BalusC
la source
@BalusC: Merci. Faire des études à partir des liens que vous avez fournis. btw, connaissez-vous quelque chose de mieux alternative de curl en java, qui fournira les mêmes fonctionnalités que curl? Merci encore.
moshfiqur
6
Comme mentionné, HttpClient est "la meilleure alternative". Vous pouvez en fait tout faire avec URLConnection, vous devez encore connaître et comprendre les spécifications HTTP. Au fait, n'essayez pas de comparer PHP avec Java. C'est comme les pommes et les oranges. Pour éviter les auto-problèmes / confusions, oubliez plutôt PHP et mettez une nouvelle vue sur Java. C'est une langue avec une idéologie complètement différente. PS: Je fais les deux, donc je raconte par expérience.
BalusC
Comme cela et d'autres personnes l'ont mentionné, utilisez HttpClient. Je recommande vraiment d'éviter d'utiliser libcurl, vous devez vous assurer de regrouper la bibliothèque native pour chaque plate-forme que vous souhaitez prendre en charge et, tôt ou tard, quelqu'un se plaindra que cela ne fonctionne pas sur son ancien Mac Power ou son poste de travail SGI.
vickirk
ne pensez-vous pas, catch block a toujours l'air sympa avec try block: D
Muhammad Suleman
Ahh ... maintenant je l'ai. vous pouvez utiliser ce type de code là où nous aurons besoin de try / catch imbriqués. désolé mon erreur!
Muhammad Suleman
5

Certaines personnes ont déjà mentionné HttpURLConnection , URL et URLConnection . Si vous avez besoin de tous les contrôles et fonctionnalités supplémentaires que la bibliothèque curl vous fournit (et plus encore), je vous recommande le client http d'Apache .

Seth
la source
4

L' objet Runtime vous permet d'exécuter des applications de ligne de commande externes à partir de Java et vous permettrait donc d'utiliser cURL, car les autres réponses indiquent qu'il existe probablement une meilleure façon de faire ce que vous essayez de faire. Si tout ce que vous voulez faire est de télécharger un fichier, l'objet URL fonctionnera très bien.

mjh2007
la source
3

Curl est un programme non java et doit être fourni en dehors de votre programme Java.

Vous pouvez facilement obtenir une grande partie des fonctionnalités en utilisant Jakarta Commons Net , sauf si vous avez besoin de certaines fonctionnalités spécifiques telles que le "transfert de reprise" (ce qui est fastidieux à coder par vous-même)

Thorbjørn Ravn Andersen
la source
Bien joué, mais Commons Net va un peu (trop) plus loin que curl.
BalusC
2

Utilisez Runtime pour appeler Curl. Ce code fonctionne à la fois pour Ubuntu et 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);
}
ariane26
la source