无法使用elixir发出HTTP Post请求?

时间:2016-07-13 06:05:46

标签: http elixir

我正在尝试的代码是: -

response = HTTPotion.post(url, [body: "{channel: \"#bot\", username: \"watson\", text: \"test\"}"])

我得到的回应是: -

%HTTPotion.Response{body: "invalid_payload",......, status_code: 400}

1 个答案:

答案 0 :(得分:2)

你提出了一个成功的请求,但身体错了。在JSON中,字段名称周围应该有引号:

[body: "{\"channel\": \"#{bot}\", \"username\": \"watson\", \"text\": \"test\"}"]

字符串插值的语法也是#{variable_name},例如:

iex(1)> bot = "mybot"
iex(2)> "#{bot}"

手动编码JSON很容易出错,因此您可能希望使用Poison

iex(3)> Poison.encode!(%{bot: bot, username: "watson", text: "test"})
"{\"username\":\"watson\",\"text\":\"test\",\"bot\":\"mybot\"}"