RAILS Отправить запрос на получение в onesignal с использованием ключа API RESTApi

Это RESTAPI, и мне нужно отправить запрос на получение сигнала.

url = https://onesignal.com/api/v1/apps

Все, что они упомянули, это:

curl --include \
     --header "Authorization: Basic your_key_here" \
 https://onesignal.com/api/v1/apps

Я пробовал что-то вроде этого:

def index
    url = URI.parse('https://onesignal.com/api/v1/apps?apikey=mykey')
    req = Net::HTTP::Get.new(url.to_s)
    res = Net::HTTP.start(url.host, url.port) {|http|
      http.request(req)
    }
    puts res.body
  end

но это не работает. Результат должен быть в json.

Я получаю эту ошибку:

<html>
<head><title>400 The plain HTTP request was sent to HTTPS port</title></head>
<body bgcolor="white">
<center><h1>400 Bad Request</h1></center>
<center>The plain HTTP request was sent to HTTPS port</center>
<hr><center>nginx/1.4.6 (Ubuntu)</center>
</body>
</html>

person user1735921    schedule 14.09.2015    source источник
comment
Что это дает вам, какие сообщения об ошибках?   -  person Kiloreux    schedule 14.09.2015
comment
Эй, я обновил его с ошибкой...   -  person user1735921    schedule 14.09.2015
comment
можете попробовать код из моего ответа.   -  person dimakura    schedule 14.09.2015


Ответы (1)


На основе кода с веб-страницы OneSignal ваш запрос должен быть таким:

uri = URI.parse("https://onesignal.com/api/v1/apps")
http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = true

request = Net::HTTP::Get.new(
  uri.path,
  "Content-Type" => "application/json",
  "Authorization" => "Basic NGXXX...XXXBlNjJj"
)

response = http.request(request) 
puts response.body

В вашем случае ошибка была связана с неиспользованием http.use_ssl = true, но у вас есть еще несколько вещей, которые нужно добавить, например, заголовок авторизации.

person dimakura    schedule 14.09.2015