3 votes

Java exécute cURL et renvoie les résultats des pages du site web

J'essaie d'exécuter des Java pour exécuter cURL afin d'accéder à un site web avec des données et cela fonctionne.

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("curl -s -S http://foo.com/testcode/Moo.cfm?PageName=" + $(Page.Name) + "&ProjectName=" + $(ProjectName));

cURL frappe ce site web et envoie les variables PageName et ProjectName.

La page web produit un certain JSON.

Comment puis-je capturer ce JSON que le site web affiche et l'utiliser dans mon Java ?

2voto

Asthor Points 453

Vous devez lire le flux d'entrée du processus. Quelque chose comme ceci devrait fonctionner avec Java 8

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("curl -s -S http://foo.com/testcode/Moo.cfm?PageName=" + $(Page.Name) + "&ProjectName=" + $(ProjectName));

//Java 8 version
String result = new BufferedReader(
                           new InputStreamReader(pr.getInputStream()))
                               .lines()
                               .collect(Collectors.joining("\n"));

//Older version than java 8
BufferedReader response = new BufferedReader(new InputStreamReader(pr.getInputStream()));
StringBuilder result = new StringBuilder();
String s;
while((s = response.readLine()) != null) {
    result.append(s);
}
System.out.println(result.toString());

//You then need to close the BufferedReader if not using Java 8
response.close();

Le résultat complet sera alors imprimé dans les deux cas.

Toutefois, si vous cherchez des moyens de communiquer avec des sites Web, il est probablement préférable d'utiliser quelque chose comme HttpClient ou OKHttp.

Si vous récupérez du JSON, je vous suggère quelque chose comme Google GSON pour l'analyser en objets. Vous trouverez un bon article sur l'analyse du JSON à l'adresse suivante Comment analyser JSON en Java

0voto

Chad Gray Points 38

Je suppose que je le posterai en tant que réponse, mais cette sortie est la première ligne de texte que le site web a retourné. Maintenant, je dois apprendre à analyser le JSON. Je suis un tel novice en Java... Merci pour votre aide !

Runtime rt = Runtime.getRuntime();
Process pr = rt.exec("curl -s -S 
Process pr = rt.exec("curl -s -S http://foo.com/testcode/Moo.cfm?PageName=" + $(Page.Name) + "&ProjectName=" + $(ProjectName));

BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));

String response;

response = br.readLine();
System.out.println(response);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X