Crafting a Proper GET request using Node JS

浪尽此生 提交于 2019-12-11 19:47:28

问题


Okay, very new to both javaScript and Node.js.

Basically what I am trying to do is to use the asynch module (a node.js module) to make a number of asynchronous calls to a number of different 'websites'.

For example, just send a GET request to 5 websites, and print their response.

The issue is that I am trying to use the XMLHttpRequest(); javascript object, but it doesn't seem to work in Node.js, saying it is undefined. I believe this is because that object needs to be used within a browser. Is this true?

At anyrate, how can I send a get request using Node.js? Without have embedded javascript in HTML or anything like that. Strictly Node.JS. This should be really simple shouldn't it?

Here is a pretty basic example of what I mean (taken from a book somewhere):

function myFunction(theUrl) {

    var xmlHttp = null;

    xmlHttp = new XMLHttpRequest();
    xmlHttp.open( "GET", theUrl, false );
    xmlHttp.send();
    console.log(xmlHttp.responseXml);
    console.log("Finished!");
    return xmlHttp.responseText;

}

EDIT:

Okay I have succesfully sent a "GET" request (I believe).

I am printing the output to a file (just for testing). Except, I get a buttload of XML (maybe JSON) back, but there is no "200 OK" message anywhere in it.

If I send a "HEAD" request, I get nothing back.

Two questions: Why aren't I getting that 200 OK message back? And what is all the XML I get back? Also, why doesn't the "HEAD" request return anything? Is Node.JS stripping that out?

I want to seperate the message response (hopefully "200 OK") and all the other headers. How can I do this if I don't get headers??


回答1:


I believe this is because that object needs to be used within a browser. Is this true?

Not exactly.

  • XMLHttpRequest is not part of core JavaScript, it is a W3C specification
  • Browsers supply an XMLHttpRequest object, so you don't have to do anything special to use it from a browser.
  • A third party XMLHttpRequest module is available for Node.js via NPM. (I've used it for writing command line tests for a JS library that normally runs in the browser.)

You just need to install the module and require it (as per the instructions in the documentation).



来源:https://stackoverflow.com/questions/22717853/crafting-a-proper-get-request-using-node-js

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!