Я уже некоторое время ломаю голову над этим ... Я могу получать и публиковать в CouchDB на своем локальном компьютере, но теперь я хочу переключиться на использование Cloudant, для которого требуется подключение через https.
Я хочу понять, что происходит, поэтому на данный момент предпочел бы использовать httpc или аналогичный, а не, скажем, диванный луч, но я просто не могу проникнуть в документацию Erlang по подключению через SSL, и любые примеры относятся к простому HTTP.. Cloudant, похоже, также не имеет какой-либо документации по Erlang.
Я просмотрел тему Как выполнить HTTPS-запрос с Erlang, но приведенный пример у меня не работает - я получаю следующий отчет об ошибке:
ฐ=ERROR REPORT==== 10-May-2011::10:40:26 ===
** Generic server <0.60.0> terminating
** Last message in was {connect_and_send,
{request,#Ref<0.0.0.50>,<0.31.0>,0,https,
{"playground.cloudant.com",443},
"/",[],get,
{http_request_h,undefined,"keep-alive",
undefined,undefined,undefined,undefined,
undefined,undefined,undefined,undefined,
undefined,undefined,undefined,undefined,
undefined,undefined,
"playground.cloudant.com",undefined,
undefined,undefined,undefined,undefined,
undefined,undefined,undefined,undefined,[],
undefined,undefined,undefined,undefined,
"0",undefined,undefined,undefined,
undefined,undefined,undefined,[]},
{[],[]},
{http_options,"HTTP/1.1",infinity,true,
{ossl,[{verify,0}]},
undefined,false,infinity,false},
"https://playground.cloudant.com",[],none,[],
1305020425911,undefined,undefined}}
** When Server state == {state,undefined,undefined,undefined,undefined,
undefined,undefined,
{[],[]},
{[],[]},
undefined,[],nolimit,nolimit,
{options,
{undefined,[]},
0,2,5,120000,2,disabled,false,inet,default,
default,[]},
{timers,[],undefined},
httpc_manager,undefined}
** Reason for termination ==
** {{badmatch,{error,no_ssl_server}},
[{ssl,old_connect,4},
{httpc_handler,connect_and_send_first_request,3},
{httpc_handler,handle_call,3},
{gen_server,handle_msg,5},
{proc_lib,init_p_do_apply,3}]}
а оболочка Erlang виснет...
Вот код, который я ввожу в оболочке Erlang:
Running Erlang
Eshell V5.8.3 (abort with ^G)
1> inets:start().
ok
2> ssl:start().
ok
3> httpc:request(head, {"https://playground.cloudant.com", []}, [{ssl,[{verify,0}]}], []).
Для строки 3 я также пробовал следующее:
3> httpc:request(head, {"https://playground.cloudant.com", []} , [], []).
3> httpc:request(get, {"https://playground.cloudant.com", []} , [{ssl,[{verify,0}]}], []).
3> httpc:request(get, {"https://playground.cloudant.com", []} , [], []).
Я без проблем могу подключиться к https://playground.cloudant.com из браузера.
Я, очевидно, что-то упускаю здесь, но не могу понять, что именно. Что мне нужно сделать с SSL? Какие-нибудь конфигурационные файлы, которые я должен хранить в определенном месте? Любая помощь будет высоко ценится!