我设法将 $http.post 发送到 skyscannerAPI:http ://partners.api.skyscanner.net/apiservices/pricing/v1.0
但是,我得到了POST http://partners.api.skyscanner.net/apiservices/pricing/v1.0 405 (Method Not Allowed)
,我通过信息搜索了有人说这可能是由于我我使用 Chrome,所以我安装了扩展Allow-Control-Allow-Origin,但它仍然显示错误。显示如下的完整错误消息:
POST http://partners.api.skyscanner.net/apiservices/pricing/v1.0 405 (Method Not Allowed)
(anonymous) @ ionic.bundle.js:25005
sendReq @ ionic.bundle.js:24798
serverRequest @ ionic.bundle.js:24508
processQueue @ ionic.bundle.js:29132
(anonymous) @ ionic.bundle.js:29148
$eval @ ionic.bundle.js:30400
$digest @ ionic.bundle.js:30216
$apply @ ionic.bundle.js:30508
(anonymous) @ ionic.bundle.js:65428
defaultHandlerWrapper @ ionic.bundle.js:16792
eventHandler @ ionic.bundle.js:16780
triggerMouseEvent @ ionic.bundle.js:2953
tapClick @ ionic.bundle.js:2942
tapTouchEnd @ ionic.bundle.js:3069
(匿名)@ ionic.bundle.js:25005 是以下代码:
xhr.send(isUndefined(post) ? null : post);
我的代码如下:
//service.js
.service('skyscanner',function($http){
var baseUrl= "http://partners.api.skyscanner.net/apiservices/pricing/v1.0";
var bodyInfo= {
body: {
apikey: My_API_KEY,
Country: "CA",
Currency: "CAD",
//more data......
}
};
this.getKey= function(){
var require_sessionkey= $http({
method:"POST",
url:baseUrl,
data: bodyInfo,
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Accept' :'application/json'
}
})
.success(function successCallback() {
var polling={};
var session_key = require_sessionkey.headers["location"];
(function(){
polling=$http.get(session_key, {query: {apikey: My_API_KEY}});
})();
return polling;
}).error(function errorCallback() {
console.log("something gets wrong: "+ require_sessionkey);
});
};
})
//controller.js
.controller('FlightSearchCtrl',function($scope,skyscanner,FlightInfos){
$scope.list = [];
$scope.text = 'hello';
$scope.skyscannerPost= function(){
var polling=skyscanner.getKey();
$scope.polling=polling;
};
})