Я работаю с SkyScanner API, чтобы получить данные о прямых ценах по рейсу.Как я могу использовать getResponseHeader из метода post в методе get?
Как говорится в документации. Я создал сеанс службы ценообразования. Который может быть создан после запроса на api, а затем он предоставляет SessionKey, используя этот SessionKey и apiKey, я могу извлечь данные. Я могу увидеть sessionKey с getResponseHeader («Местоположение»), который я использую в методе успеха. И я отправляю его в глобальную переменную urlSession, которую я использую позже в другом запросе http get в качестве URL-адреса. Я вижу SessionKey в предупреждении, но у меня есть неопределенная ошибка, когда я пытаюсь использовать его в методе get. Я не уверен, что это проблема CORS или просто синтаксис.
var hrpost = Ti.Network.createHTTPClient();
// post_params
var post_params = {
"apiKey" : {apiKey},
"Country" : "US",
"Currency" : "USD",
"Locale" : "en-GB",
"Adults" : 1,
"Children" : 0,
"Infants" : 0,
"OriginPlace" : "16216",
"DestinationPlace" : "1111",
"OutboundDate" : "2016-09-23",
"InboundDate" : "2016-09-30",
"LocationSchema" : "Default",
"CabinClass" : "Economy",
"GroupPricing" : true
};
var strMyObj = JSON.stringify(post_params);
//Here I set the webservice address and method
hrpost.open('POST', "http://partners.api.skyscanner.net/apiservices/pricing/v1.0");
//Set the headers
hrpost.setRequestHeader("Accept", "application/json");
hrpost.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
hrpost.send(post_params);
hrpost.onload = function(){
alert('Posted successfully');
urlsessionKey = hrpost.getResponseHeader('Location');
alert(urlsessionKey);
}
hrpost.onerror = function() {
alert('request didnt posted');
var rejection = {
status: hrpost.status,
statusText: hrpost.statusText,
};
alert(rejection);
};
//HTTP request get method to send the sessionKey and retrieve data
var xmlHttp = Ti.Network.createHTTPClient();
var post_params = {
"apiKey" : {apiKey},
"Country" : "US",
"Currency" : "USD",
"Locale" : "en-GB",
"Adults" : 1,
"Children" : 0,
"Infants" : 0,
"OriginPlace" : "16216",
"DestinationPlace" : "1111",
"OutboundDate" : "2016-09-23",
"InboundDate" : "2016-09-30",
"LocationSchema" : "Default",
"CabinClass" : "Economy",
"GroupPricing" : true
};
//here the error occurs when I use the sessionKey I stored in the global var urlsessionKey
xmlHttp.open('GET', urlsessionKey);
xmlHttp.setRequestHeader("Accept", "application/json");
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(post_params);
xmlHttp.onload = function(e){
alert('Get successfully');
}
xmlHttp.onerror = function() {
alert('request didnt posted');
var rejection = {
status: xmlHttp.status,
statusText: xmlHttp.statusText,
};
alert(rejection);
};
Спасибо за ваш ответ. Я смог вытащить sessionKey с hrpost.getResponseHeader («Местоположение»), не добавляя apiKey. Проблема с моим кодом заключалась в порядке вызовов, которые я делал, я установил post http-запрос для ложной асинхронности. И я получил запрос на получение запроса в методе onload почтового запроса. Я смог решить проблему с этой архитектурой. –