ElixirからErlangのhttpcを使う場合はURLなどをcharlistで渡すこと
要はこれ
この問題は当然ほかのErlang APIを使う場合にも出てくるので、頻出のケースではすぐ検索で引っかかったりして解決しやすいのだが、マイナーなケースで思い出したように引っかかる。
特にエラーメッセージに情報が少ない場合。
iexから、:httpcに単にElixirの文字列を渡した場合のエラーは以下(verbose: :verbose):
code:iex
(<0.130.0>) << {init_error,error_connecting,
{#Ref<0.2616474297.2540437511.58704>,
{error,
{failed_connect,
[{to_address,{<<"www.example.com">>,443}},
{inet,
{options,
{socket_options,
[inet,
{packet_size,0},
{packet,0},
{header,0},
{active,false},
{mode,binary}]}}}]}}}}
{:error,
{:failed_connect,
[{:to_address, {"www.example.com", 443}},
{:options,
{:socket_options,
[:inet, {:packet_size, 0}, {:packet, 0}, {:header, 0}, {:active, false},
{:mode, :binary}]}}}]}}
正しくはこう
code:iex
{:ok,
{{'HTTP/1.1', 200, 'OK'},
[{'cache-control', 'max-age=604800'},
{'date', 'Tue, 12 Jun 2018 02:41:47 GMT'}, {'etag', '"1541025663+ident"'},
{'server', 'ECS (sec/96EE)'}, {'vary', 'Accept-Encoding'},
{'content-length', '1270'}, {'content-type', 'text/html'},
{'expires', 'Tue, 19 Jun 2018 02:41:47 GMT'},
{'last-modified', 'Fri, 09 Aug 2013 23:54:35 GMT'}, {'x-cache', 'HIT'}],
'<!doctype html>\n<html>\n<head>\n <title>Example Domain</title>\n\n <meta charset="utf-8" />\n <meta http-equiv="Content-type" content="text/html; charset=utf-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1" />\n <style type="text/css">\n body {\n background-color: #f0f0f2;\n margin: 0;\n padding: 0;\n font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;\n \n }\n div {\n width: 600px;\n margin: 5em auto;\n padding: 50px;\n background-color: #fff;\n border-radius: 1em;\n }\n a:link, a:visited {\n color: #38488f;\n text-decoration: none;\n }\n @media (max-width: 700px) {\n body {\n background-color: #fff;\n }\n div {\n width: auto;\n margin: 0 auto;\n border-radius: 0;\n padding: 1em;\n }\n }\n </style> \n</head>\n\n<body>\n<div>\n <h1>Example Domain</h1>\n <p>This domain is established to be used for illustrative examples in documents. You may use this\n domain in examples without prior coordination or asking for permission.</p>\n <p><a href="http://www.iana.org/domains/example">More information...</a></p>\n</div>\n</body>\n</html>\n'}}