用$ http帖子获得404

时间:2015-11-20 21:23:01

标签: javascript angularjs ajax api

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;
    });

}]);

当我尝试te $ http“POST”时,上面的代码给了我404。

当我在console.log($ scope.clientResult.resource_server_base_uri)时,我得到:“https%3a%2f%2fapi-c7.incontact.com%2finContactAPI%2f”。

但是,我得到了404,当我查看开发人员工具时,我发现它正试图发布到:"http://localhost:63342/Call_cntr/client/https%3a%2f%2fapi-c7.incontact.com%2finContactAPI%2fservices/v6.0/agent-sessions"

我开始认为它失败了,因为“:// localhost ...”被“预先”添加到base_uri ...不确定为什么会发生这种情况。我觉得我提供了inContact API文档中提到的所有内容。也许这是我从AJAX到$ http的角度转换?

任何帮助,非常感谢,我被卡住了..

  

获得API身份验证令牌后,您可以使用此令牌为其用于获取令牌的凭据创建代理会话。这是通过请求https://api- {cluster} .incontact.com / inContactAPI / services / v6.0 / agent-sessions方法,并提供“电台ID”或电话号码来完成的。剂。

根据文档:https://developer.incontact.com/API/AgentAPI#!/Sessions/startSession

1 个答案:

答案 0 :(得分:0)

尝试

result.resource_server_base_uri = unescape(query_string.resource_server_base_uri);

我认为/实际上是一个分隔符,但%2f成为一个普通字符,只代表您网址中的/个字符。

unescape()已被弃用;试试decodeURIComponent()