为什么我不能在我的亚马逊服务器上使用新的XMLHttpRequest?

时间:2016-06-03 08:01:02

标签: javascript node.js amazon-web-services amazon-ec2

所以忍受我,因为我觉得我已经尝试了所有尝试的东西。我是JavaScript的新手,我之前主要使用过C / C ++,而且我对这些语言也是一个新手。我尝试在我的aws服务(ec2)服务器上创建一个页面,当使用URL的get请求访问它时,它将使用我的服务器端API密钥并从给定的URL返回它请求的JSON数据。我正在使用英雄联盟API和NodeJs使用永远的开始* .js,把手和表达JavaScript。

我觉得有必要提一下,虽然这个问题出现了,但是我已经完成了一项课程的分配而没有包含该功能。

我尝试同步和异步这样做,但它对我不起作用。我觉得这是因为使用var foo = new XMLHttpRequest不是从服务器向另一台服务器发送get请求的正确方法。当我试图找到一个更好的方法来使用nodejs时,我找不到任何对我有意义或我能理解的东西。

请让我知道为什么这是错误的/为什么这会破坏我怎么能让它不破坏或正确地做到这一点。尽管经过几个小时的挣扎和搜索,我找不到任何类似的堆栈溢出问题。

app.get('/test',function(req,res){

       //if(url == undefined){
    var url = "https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/RiotSchmick";
       //}
    var KEY= "REDACTED_FOR_POST";//note I have a functional api 
       //key that I can correctly use to view data through a browser get request.

    var local = new XMLHttpRequest();//this line prevents this page from runnning

    local.open("GET", "https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/RiotSchmick?api_key=REDACTED_FOR_POST", false);

       //RiotSchmick is used as an example "summoner" name in quick start
    local.send(null);

    var content = {};//holder for handlebars
    content.text = local.responseText;//I expected this to have a string form JSON.

    res.render('buffer.handlebars', content);
       //buffer.handlebars is one line: {{text}} and properly prints data when
       //content.text is assigned to a constant such as "hello"

})

感谢您的帮助和时间。

1 个答案:

答案 0 :(得分:1)

除非您使用https://github.com/driverdan/node-XMLHttpRequest之类的内容,否则节点中没有XMLHttpRequestXMLHttpRequest是仅存在于浏览器中的对象。

您必须要求http在节点中发出http请求。

var http = require('http');

然后你可以做那样的事情(taken from the docs):

var postData = querystring.stringify({
  'msg' : 'Hello World!'
});

var options = {
  hostname: 'www.google.com',
  port: 80,
  path: '/upload',
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Content-Length': postData.length
  }
};

var req = http.request(options, (res) => {
  console.log(`STATUS: ${res.statusCode}`);
  console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
  res.setEncoding('utf8');
  res.on('data', (chunk) => {
    console.log(`BODY: ${chunk}`);
  });
  res.on('end', () => {
    console.log('No more data in response.')
  })
});

req.on('error', (e) => {
  console.log(`problem with request: ${e.message}`);
});

// write data to request body
req.write(postData);
req.end(

);