https: // запросы: HTTPclient или (командная строка + curl)? - PullRequest
3 голосов
/ 09 октября 2010

Мне нужно сделать несколько запросов с куки на https: // URL. Я знаю, как это сделать из командной строки с помощью cURL, и хотел бы автоматизировать это с помощью Java.

Я смотрю на HTTPClient и совершенно запутался. Кажется, что это заняло бы много безобразного программирования. Есть ли какая-то причина, по которой я должен продолжать эту линию усилий?

Другой способ - выполнить исполняемый файл cURL из Java, что, кажется, будет проще, если будет труднее.

Ответы [ 2 ]

2 голосов
/ 09 октября 2010

См. Их руководство по Используя SSL , из того, что я могу сказать, это тот же HttpClient 4.x, за исключением того, что он использует немного другой синтаксис 4.x (см. пример этого синтаксис ). Другими словами, если вы измените «http» в этом примере на «https», он будет работать отлично. Если бы вы смотрели этот учебник , я могу понять, почему вы думаете, что это сложнее, чем необходимо. Однако это необходимо, только если корневой сертификат сайта, к которому вы пытаетесь получить доступ, не является принятым сертификатом JVM.

Однако, если необходимы специальные вещи с сертификатами do , здесь является примером того, как это сделать. Честно говоря, я не знаю, что сделает curl, если вы отправите его в неподтвержденный сертификат, но я думаю, что по крайней мере вы должны указать какой-то параметр командной строки, чтобы заставить его игнорировать это.

Что именно делает скручивание проще, чем HttpClient, когда дело доходит до файлов cookie?

Основная причина того, что нужно избегать вызова чего-либо из командной строки, заключается в том, что это затрудняет обработку ошибок. Если команда заканчивается в состоянии ошибки, вы действительно можете только распечатать сообщение об ошибке, которое она дает & mdash; или, возможно, выполнить некоторую обработку сообщения об ошибке и попытаться выдать исключения, основанные на этом, но в тот момент, когда вы меняете версии, ваш код проверки ошибок, вероятно, будет признан недействительным. Он также вводит внешнюю зависимость, которую вы, вероятно, не захотите поставлять с вашей банкой.

С другой стороны, если вы используете HttpClient, он будет генерировать исключения, основанные именно на том, в чем проблема, что позволит вам по-разному реагировать на условия ошибки.

Редактировать: Извините, почему-то упустил тот факт, что вы уже работали с ним. Думаю, вы работали с чем-то на основе JDK.

0 голосов
/ 10 октября 2010

Попробуйте Jetty + SSL

Не совсем прямо, но хорошо документировано, и это работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...