我正在尝试的代码是: -
response = HTTPotion.post(url, [body: "{channel: \"#bot\", username: \"watson\", text: \"test\"}"])
我得到的回应是: -
%HTTPotion.Response{body: "invalid_payload",......, status_code: 400}
答案 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\"}"