Я уже некоторое время ломаю голову над этим ... Я могу получить и отправить сообщение на couchdb на своей локальной машине, но теперь я хочу перейти на использование Cloudant, для которого требуется соединение через https.
Я хочу понять, что происходит, поэтому предпочел бы использовать httpc или аналогичный на данный момент, а не, скажем, couchbeam, но я просто не могу проникнуть в документацию 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:
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? Какие-нибудь конфигурационные файлы, которые я должен иметь в определенном месте Любая помощь будет высоко ценится!