2016-04-14 7 views
1

Я хочу назвать API House House от R на удаленном Linux-сервере под управлением Ubuntu 14.04 LTS. Я начинаю R от терминала, и я использую пакет «HTTR» и делает запрос на следующий GET (используя «Paul + Додда» как термин пример поиска):Ошибка SSL-соединения при вызове API-интерфейсов компаний из R на удаленном Linux-сервере

call <- GET("https://api.companieshouse.gov.uk/search/companies?q=Paul+Dodd&items_per_page=50&start_index=1", authenticate("API_KEY_HERE", "")) 

Вы можете подать заявление на компании House API и получить дополнительную информацию об API здесь: https://developer.companieshouse.gov.uk/api/docs/index.html

Ответ от вызова API должен быть сложным списком информации о компании.

Однако я получаю следующее сообщение об ошибке:

Ошибка в завиток :: curl_fetch_memory (URL, ручка = ручка): SSL подключения ошибку

Я попытался set_config(config(ssl_verifypeer = 0L)), который иногда дает правильный объект ответа, но, как правило, дает либо ошибку SSL выше или следующее сообщение об ошибке:

Сбой при получении данных от партнера

Вышеупомянутый вызов API работает при запуске R на рабочем столе Windows (под управлением Windows 7) и на моем Mac. Вызов API работает с нескольких IP-адресов.

Я установил следующие зависимости на удаленном сервере и модернизирован и обновлен, но ошибка повторяется:

sudo apt-get upgrade 
sudo apt-get update 
sudo apt-get install libcurl4-openssl-dev 
sudo apt-get install libssl-dev 

Наконец, когда я выхожу R и запустить вызов API в терминале удаленного сервера я получаю правильный ответ. Команда, которую я использовал это следующим образом:

curl -u"API_KEY_HERE": https://api.companieshouse.gov.uk/search/companies?q=Paul+Dodd&items_per_page=50&start_index=1 

Я подозреваю, что SSL подключения ошибка в R может быть проблема с сертификатами CA, однако я на пределе моих знаний SSL. Есть ли у вас какие-либо предложения относительно того, как я могу это исправить, чтобы я мог вызвать API из R с помощью httr?

+0

Вы просматривали конкретный порт на брандмауэре, останавливающем SSL? Я не уверен в архитектуре Linux, но возможно ли, что сертификаты могут храниться локально, а не запрашивать новый каждый раз? –

ответ

0

После нескольких проб и ошибок, я обнаружил, что при установке следующих пакетов: jsonlite, мим, завиток (≥ 0.9.1), OpenSSL (≥ 0,8), R6, используя:

install.packages("package_name") 

решен вопрос ,