2015-09-10 3 views
6

Я хочу создать токен Github в Elixir, используя библиотеку HTTPoison, но я просто не могу понять, как отправить HTTPoison параметр.Создайте токен Github, используя Elixir HTTPoison Library

При использовании curl, это будет что-то вроде this

$ curl -i -u "ColdFreak" -H "X-GitHub-OTP: 123456" -d '{"scopes": ["repo", "user"], "note" 
: "getting-started"}' https://api.github.com/authorizations 

, когда я использую библиотеку HTTPoison, я просто не могу понять, как разместить его.

url = "https://api.github.com/authorizations" 
HTTPoison.post!(url, [scopes: ["repo", "user"], note: "getting-started"], %{"X-GitHub-OTP" => "12345"}) 

тогда он дал что-то ошибки, как это

** (ArgumentError) argument error 
      :erlang.iolist_to_binary([{"scopes", ["repo", "user"]}, {"note", "getting-started"}]) 
    (hackney) src/hackney_client/hackney_request.erl:338: :hackney_request.handle_body/4 
    (hackney) src/hackney_client/hackney_request.erl:79: :hackney_request.perform/2 

Может кто-нибудь сказать мне, как сделать это правильно

HTTPoison-й документация here

ответ

11

Проблемы с вашим тело HTTPoison ожидает либо двоичный, либо кортеж в формате {:form, [foo: "bar"]}:

HTTPoison.post!(url, {:form, [scopes: "repo, user", note: "getting-started"]}, %{"X-GitHub-OTP" => "610554"}) 

или

HTTPoison.post!(url, "{\"scopes\": \"repo, user\", \"note\": \"getting-started\"}", %{"X-GitHub-OTP" => "610554"}) 

Вы можете использовать Poison библиотеку для генерации JSON выше:

json = %{scopes: "repo, user", note: "getting-started"} |> Poison.encode! 
HTTPoison.post!(url, json, %{"X-GitHub-OTP" => "610554"}) 
+0

keywork ': form' является necessry, я не знал, что, спасибо много !!!! Оно работает! Я тоже попробую «Яд», ты действительно спас мне много времени! –

Смежные вопросы