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.
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();
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
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();
Essayez Apache Commons Net pour les protocoles réseau. Gratuit!
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.
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;
}