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.


@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: 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


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.



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)


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);
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.