Эквивалент 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

jsoup

Библиотека jsoup извлекает URL-адрес как первый шаг к своим обязанностям по поиску и анализу HTML.

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

Попробуйте 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;
}
Другие вопросы по тегам