2015-09-10 13 views
6

Chcę utworzyć token Github w eliksirie za pomocą biblioteki HTTPoison, ale nie mogę po prostu dowiedzieć się, jak wysłać parametr HTTPoison.Utwórz token Github przy użyciu biblioteki Elixir HTTPoison

Podczas korzystania curl, to będzie coś this

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

kiedy używam biblioteki HTTPoison, ja po prostu nie może dowiedzieć się, jak je zakładać.

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

to dało coś błędu takiego

** (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 

Czy ktoś może mi powiedzieć jak to zrobić to we właściwy sposób

HTTPoison użytkownika dokumentacja jest here

Odpowiedz

11

Problem jest z telefonem body HTTPoison oczekuje binarnej lub krotki w formacie {:form, [foo: "bar"]}:

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

lub

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

Można użyć biblioteki Poison wygenerować JSON powyżej:

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

keywork ': form' jest necessry, nie wiedziałem, że dziękuję bardzo dużo!!!! To działa! Spróbuję też "Trucizny", naprawdę zaoszczędziłeś mi dużo czasu! –

Powiązane problemy