使用http.get()访问(Discord)API时出错

时间:2016-04-09 09:24:52

标签: node.js api http get

我的问题是访问Discord API(api / gateway)时出现301错误 在Postman(REST客户端)中,它工作正常:

enter image description here

但如果我使用我的代码,它总是会返回301错误:

function getGateway(){
    http.get({
        host: 'discordapp.com',
        path: '/api/gateway',
        headers: {
            'User-Agent': useragent //This is a variable.
        }
    }, function(res) {
        if (res.statusCode === 200) {
            var body = [];
            res.setEncoding('utf8');
            res.on('data', function(chunk) {
                body.push(chunk);
            });
            res.on('end', function() {
                body = body.join('');
                return body.url;
            });
        } else {
            if (res.statusCode === 429){
                setTimeout(function() {
                    getGateway();
                }, parseInt(JSON.parse(res.headers).Retry-After, 10) * 1000)
            } else {
                console.log('Received non-ok response: ' + res.statusCode);
            }
        }
    });
}

输出:

undefined
Received non-ok response: 301

错误代码301在API文档中甚至没有 有人能看出我做错了吗?

1 个答案:

答案 0 :(得分:0)

HTTP code 301表示您尝试访问的网址已被移动。其中一个原因可能是它会自动重定向到API的HTTPS版本。

不幸的是,看起来节点http模块无法处理以下重定向。我会建议其中一个选项:

  • 使用真棒request模块
  • 找到您正在呼叫的网址尝试重定向的位置:响应正文应包含有关此内容的信息
  • 使用follow-redirects模块作为http模块的替代品,如here所述