Как получить ключ сессии из пост-запроса 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"