Próbuję pobrać obraz z imguru za pomocą dostarczonego API z Ruby 2.0.0 i Rails 4.0.0. Próbowałem zbudować żądanie http na różne sposoby, jak wymienione w dokumentach Ruby 2.0.0, bezskutecznie.Pobierz obraz za pomocą interfejsu API imgur w Ruby (na szynach)
Oto kod:
require 'net/http'
require 'net/https'
def imgur
headers = {
"Authorization" => "Client-ID " + my_client_id
}
path = "/3/gallery/image/#{img_id}.json"
uri = URI("https://api.imgur.com"+path)
request, data = Net::HTTP::Get.new(path, headers)
response = Net::HTTP.new(uri.host, uri.port).start {|http| http.request(request) }
puts "response:"
p response
puts response
end
gdzie img_id
i my_client_id
dopiero ustalony z odpowiednimi wartościami. (Metoda imgur
wywoływana jest w ramach działania kontrolera odpowiadającego adresowi URL mojej witryny)
To jest odpowiedź, którą otrzymuję, gdy uruchamiam rails s
(używam localhost: 3000), a następnie odwiedzam adres root, localhost: 3000 (który ma wywołać działania, które nazywa imgur
):
#<Net::HTTPBadRequest 400 Bad Request readbody=true>
#<Net::HTTPBadRequest:0x007f8a6ce0da78>
UPDATE:
również ten pracował:
curl --header "Authorization: Client-ID my_client_id" https://api.imgur.com/3/gallery/image/7x98w9T.json
(ponownie, my_client_id
jest zakodowana na stałe przy pomocy mojego rzeczywistego identyfikatora klienta). Teraz, aby działało na Ruby ...
Ktoś wie, jak to zrobić?
jeśli używasz curl lub wget z tych parametrów to działa? – rogerdpack
to działało: $ curl - nagłówek "Autoryzacja: Client-ID XXXXXXXXX" https://api.imgur.com/3/gallery/7x98w9T.json gdzie X to mój identyfikator klienta ... identyfikator obrazu imgura to jeden dla obrazu zaznaczonego losowo –
w powyższym komentarzu chciałem wpisać api.imgur.com/3/gallery/image/7x98w9T.json (chociaż testowałem to, co faktycznie napisałem w powyższym komentarzu i działa również ...) –