Как получить ключ сессии из пост-запроса API-интерфейса Skyscanner - Ruby

В моем приложении я хочу получить Live Price по информации о рейсе, для этого я использовал SkyScanner API. Я прочитал документацию, прежде чем получить данные, которые я должен создать сеанс Live Pricing Service. Который может быть создан после отправки запроса в API, а затем предоставить SessionKey используя это SessionKey а также apiKey Я могу получить данные. Так как я могу получить Sessionkey, как я понял, он должен быть предоставлен API-сервером.

Вот моя попытка:

require 'json'
require 'net/http'
require 'uri'


  post_params = { 
    :apiKey => "[API_KEY]",
    :country => "GB",
    :currency => "GBP",
    :locale => "en-GB",
    :adults =>1,
    :children => 0,
    :infants => 0,
    :originplace => '11235',
    :destinationplace => '13554',
    :outbounddate => '2015-05-19',
    :inbounddate => '2015-05-26',
    :locationschema => 'Default',
    :cabinclass => 'Economy',
    :groupPricing => true
  }


sessionkey_request = Net::HTTP.post_form(URI.parse('http://partners.api.skyscanner.net/apiservices/pricing/v1.0'), post_params )
get_data= "http://partners.api.skyscanner.net/apiservices/pricing/v1.0/?apiKey=[API_KEY]"
puts sessionkey_request.inspect
temp = Net::HTTP.get_response(URI.parse(get_data)).body
# puts temp

В консоли я получаю

<Net::HTTPCreated 201 Created readbody=true> # sessionkey_request.inspect

Не получив SessionKey в ответ, без него я не могу получить данные. Пожалуйста, ведите меня, где я ошибаюсь. Я ценю за решение.

Более подробная информация и живой результат. Проверьте Demo по API.

Примечание: я проверил гем 'skyscanner ', но он не предоставляет никакого метода для Live Price. Это обеспечивает методы Browse Cache.

1 ответ

Решение

Согласно документу:

Успешный ответ не содержит контента. URL для опроса деталей бронирования указан в заголовке Location ответа

так что попробуйте это:

sessionkey_request["location"]

Я протестировал его в своей системе, и он возвращает меня:

http://partners.api.skyscanner.net/apiservices/pricing/v1.0/8e28260becd3441ca4e865396e224e7d_ecilpojl_EC71481935CEBB7EAF661BC24940D01D

последняя часть твоя sessionKey который вы можете использовать для GET запрос. Если вам нужна только последняя часть (sessionKey), вы можете получить ее:

 > url = "http://partners.api.skyscanner.net/apiservices/pricing/v1.0/8e28260becd3441ca4e865396e224e7d_ecilpojl_EC71481935CEBB7EAF661BC24940D01D"
 > url.split('/').last
 => "8e28260becd3441ca4e865396e224e7d_ecilpojl_EC71481935CEBB7EAF661BC24940D01D" 
Другие вопросы по тегам