Эквивалент CURL в JAVA
Мне поручено написать компонент аутентификации для открытого исходного кода. JAVA
приложение. У нас есть собственный виджет аутентификации, который использует https
, У меня есть пример php
код, который обращается к widget
который использует cURL
обрабатывать передачу.
У меня вопрос, есть ли порт cURL
в JAVA
или, что еще лучше, какой базовый пакет подберет меня достаточно близко, чтобы справиться с задачей?
Обновление:
Вкратце, код, который я хотел бы воспроизвести в 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);
Хит, я думаю, что вы на правильном пути, я собираюсь в конечном итоге использовать HttpsURLConnection, а затем выбрать то, что мне нужно из ответа.
5 ответов
Обработка исключений опущена:
HttpURLConnection con = (HttpURLConnection) new URL("https://www.example.com").openConnection();
con.setRequestMethod("POST");
con.getOutputStream().write("LOGIN".getBytes("UTF-8"));
con.getInputStream();
Я бы использовал Commons Http Client. В проекте есть класс contrib, который позволяет использовать ssl.
Мы используем его, и он работает хорошо.
Изменить: вот руководство по SSL
Попробуйте Apache Commons Net для сетевых протоколов. Свободно!
Вы также можете попробовать [ http://hc.apache.org/](HTTP Components) из проекта Apache, если вам нужно больше возможностей, чем тех, которые предоставляются через Commons Net.
Вы можете попробовать curl-to-java lib для преобразования php-кода curl в java-код https://github.com/jeffreyning/curl-to-java, как это
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;
}