Javascript 使用$http post获取404 csMgmtApp.controller('launchedController',['$scope','$http','$document','$resource',函数($scope,$http,$document,$resource){ $scope.clientResult={}; $scope.data={}; $document.ready(函数(){ var query_string={}; var query=window.location.search.substring(1); var vars=query.split(&); 对于(变量i=0;i
当我尝试te$http“POST”时,上面的代码给了我一个404 当我使用console.log($scope.clientResult.resource\u server\u base\u uri)时,我会得到:“https%3a%2f%2fapi-c7.incontact.com%2finContactAPI%2f” 但是,我得到了一个404,当我查看开发人员工具时,我看到它正试图发布到:Javascript 使用$http post获取404 csMgmtApp.controller('launchedController',['$scope','$http','$document','$resource',函数($scope,$http,$document,$resource){ $scope.clientResult={}; $scope.data={}; $document.ready(函数(){ var query_string={}; var query=window.location.search.substring(1); var vars=query.split(&); 对于(变量i=0;i,javascript,angularjs,ajax,api,Javascript,Angularjs,Ajax,Api,当我尝试te$http“POST”时,上面的代码给了我一个404 当我使用console.log($scope.clientResult.resource\u server\u base\u uri)时,我会得到:“https%3a%2f%2fapi-c7.incontact.com%2finContactAPI%2f” 但是,我得到了一个404,当我查看开发人员工具时,我看到它正试图发布到:”http://localhost:63342/Call_cntr/client/https%3a%2f
”http://localhost:63342/Call_cntr/client/https%3a%2f%2fapi-c7.incontact.com%2incontactAPI%2fservices/v6.0/agent sessions“
我开始认为它失败了,因为“://localhost…”被“预加”到了基uri。。。不知道为什么会这样。我觉得我提供了inContact API文档中提到的所有内容。也许是我从AJAX到$http的角度转换
任何帮助,非常感谢,我被困住了
拥有API身份验证令牌后,可以使用此令牌为用于获取令牌的凭据的代理创建代理会话。这是通过请求{cluster}.incontact.com/inContactAPI/services/v6.0/agent-sessions方法来完成的,并提供一个“站点ID”或一个将发送给代理的电话号码
根据文档:尝试
csMgmtApp.controller('launchedController', ['$scope', '$http', '$document', '$resource', function ($scope, $http, $document, $resource) {
$scope.clientResult = {};
$scope.data = {};
$document.ready(function () {
var query_string = {};
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i=0; i < vars.length; i++) {
var pair = vars[i].split("=");
query_string[pair[0]] = pair[1];
}
if (typeof(query_string.access_token) != "undefined") {
var result = {};
result.state = query_string.state;
result.scope = query_string.scope;
result.access_token = query_string.access_token;
result.expires_in = query_string.expires_in;
result.resource_server_base_uri = query_string.resource_server_base_uri;
result.token_type = query_string.token_type;
}
$scope.clientResult = result;
});
console.log($scope.clientResult);
$scope.startSessionPayload = {
'stationPhoneNumber': '5555555555',
'inactivityTimeout': '0',
'inactivityForceLogout': 'false'
};
$http({
'url': $scope.clientResult.resource_server_base_uri + 'services/v6.0/agent-sessions',
'method': 'POST',
'headers':{'Authorization': 'bearer ' + $scope.clientResult.access_token,'content-Type': 'application/json'},
'data': JSON.stringify($scope.startSessionPayload)
}).success(function(data, status, headers, config) {
$scope.data = data;
console.log('data', $scope.data)
}).error(function(data, status, headers, config) {
$scope.status = status;
});
}]);
我相信/
实际上是一个分隔符,但是%2f
变成了一个普通字符,它只是表示url中的/
字符
unescape()
已弃用;尝试decodeURIComponent()
出于测试目的,是否可以对url进行硬编码,以确保它指向inContact服务器,而不是使用$scope.clientResult.resource\u server\u base\u uri
(它似乎错误地指向本地主机)?您是在浏览器中输入http%3a%2f%2stackoverflow.com/
还是http://stackoverflow.com/
?您应该发布的正确URL是什么?嘿,伙计们,我将尝试所有这些解决方案。我会用正确的url更新我的问题。我会使用,但http%3是我从API得到的。有没有办法解析它?在浏览器中不是%3=:,和%f=/,太棒了。我“我现在有进展了,得到了一个未经授权的401计划,但这是一个新问题。联合国环境规划署起了作用。。尽管如此,我的编辑还是试图告诉我它被贬值了..这解决了401问题,将unescape应用到auth_令牌上。。如果你不介意教某人,为什么它从API返回了错误的格式,为什么它必须使用unescape?如果其他人使用此decodeURI可以代替unescape。我希望我首先建议decodeURIComponent()
。我很高兴你把问题解决了。
result.resource_server_base_uri = unescape(query_string.resource_server_base_uri);