web-dev-qa-db-fra.com

équivalent cURL en JAVA

Je suis chargé d'écrire un composant d'authentification pour une application open source Java. Nous avons un widget d'authentification interne qui utilise https. J'ai un exemple de code php qui accède au widget qui utilise cURL pour gérer le transfert.

Ma question est de savoir s'il existe ou non un port de cURL vers Java, ou mieux encore, quel package de base me rapprochera suffisamment pour gérer la tâche?

Mise à jour :

C'est en un mot, le code que je voudrais répliquer en Java:

$cp = curl_init();
$my_url = "https://" . AUTH_SERVER . "/auth/authenticate.asp?pt1=$uname&pt2=$pass&pt4=full";
curl_setopt($cp, CURLOPT_URL, $my_url);
curl_setopt($cp, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($cp);
curl_close($cp);

Heath , je pense que vous êtes sur la bonne voie, je pense que je vais finir par utiliser HttpsURLConnection puis choisir ce dont j'ai besoin dans la réponse.

43
JK.

Traitement des exceptions omis:

HttpURLConnection con = (HttpURLConnection) new URL("https://www.example.com").openConnection();
con.setRequestMethod("POST");
con.getOutputStream().write("LOGIN".getBytes("UTF-8"));
con.getInputStream();
62
Heath Borders

J'utiliserais le Commons Http Client . Il y a une classe contrib dans le projet qui vous permet d'utiliser ssl.

Nous l'utilisons et cela fonctionne bien.

Modifier: voici le Guide SSL

23
ScArcher2

jsoup

La bibliothèque jsoup récupère une URL comme première étape de ses fonctions de grattage et d'analyse HTML.

Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
4
Basil Bourque

Essayez Apache Commons Net pour les protocoles réseau. Gratuit!

1
Jason Cohen

Vous pouvez également essayer [ http://hc.Apache.org/] (HTTP Composants) du projet Apache si vous avez besoin de plus de fonctionnalités que celles fournies via Commons Net.

1
WMR

vous pouvez essayer la bibliothèque curl-to-Java pour convertir le code php curl en Java code https://github.com/jeffreyning/curl-to-Java comme une démonstration cette

public Object curl(String url, Object postData, String method) {

CurlLib curl = CurlFactory.getInstance("default");
ch = curl.curl_init();
curl.curl_setopt(ch, CurlOption.CURLOPT_CONNECTTIMEOUT, 1000);
curl.curl_setopt(ch, CurlOption.CURLOPT_TIMEOUT, 5000);
curl.curl_setopt(ch, CurlOption.CURLOPT_SSL_VERIFYPEER, false);
curl.curl_setopt(ch, CurlOption.CURLOPT_SSL_VERIFYHOST, false);
String postDataStr = "key1=v1";

curl.curl_setopt(ch, CurlOption.CURLOPT_CUSTOMREQUEST, "POST");
curl.curl_setopt(ch, CurlOption.CURLOPT_POSTFIELDS, postDataStr);
curl.curl_setopt(ch, CurlOption.CURLOPT_URL, "https://xxxx.com/yyy");
Object html = curl.curl_exec(ch);
Object httpCode = curl.curl_getinfo(ch, CurlInfo.CURLINFO_HTTP_CODE);
if (httpCode != null && 200 == Integer.valueOf(httpCode.toString())) {
    return null;
}
return html;
}
0
jeffrey