【发布时间】:2011-08-22 08:07:42
【问题描述】:
一段时间以来,我一直在努力解决这个问题……我可以在本地计算机上获取并发布到 couchdb,但现在我想切换到使用需要通过 https 进行连接的 Cloudant。
我想了解发生了什么,所以我更愿意暂时使用 httpc 或类似的东西,而不是说,couchbeam 但我似乎无法深入了解有关通过 SSL 连接的 Erlang 文档,并且任何示例都过于简单HTTP ... Cloudant 似乎也没有任何特定于 Erlang 的文档。
我查看了主题 How do I do an HTTPS request with 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 shell 挂起 ...
这是我在 Erlang shell 中输入的代码:
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 做些什么吗?我应该把任何配置文件放在一个特定的地方吗?任何帮助将不胜感激!
【问题讨论】:
-
我在这篇博文中更详细地介绍了我自己在这个领域的冒险经历,供感兴趣的人参考:andrewlocatelliwoodcock.com/2012/06/12/…
标签: https erlang couchdb cloudant