2

我正在尝试遵循此处的文档

http://nodejs.org/api/http.html

但是我找不到有关执行简单操作(例如将用户名和密码发布到 URL)的文档。我该怎么做?

4

2 回答 2

7

node.js 文档对此并不是特别清楚

http://nodejs.org/api/http.html#http_http_request_options_callback

这就是我提出请求的方式,使用查询字符串来解析输入。

//require a few things.

var http = require('http'),
    qs = require('qs');

//These are the post options
var options = {
  hostname: 'www.mysite.com',
  port: 80,
  path: '/auth',
  method: 'POST'
};
//The postdata can be anything, but I'm using querystring 
//to convert it into the format 
//username=User&password=Password to be easily parsed in php

var postdata = qs.stringify({
    username:"User",
    password:"Password"
});

//Initialise the variable that will store the response
var body='';


//Now we're going to set up the request and the callbacks to handle the data
var request = http.request(options, function(response) {
    //When we receive data, we want to store it in a string
    response.on('data', function (chunk) {
        body += chunk;
    });
    //On end of the request, run what we need to
    response.on('end',function() {
        //Do Something with the data
        console.log(body);
    });
});

//Now we need to set up the request itself. 
//This is a simple sample error function
request.on('error', function(e) {
  console.log('problem with request: ' + e.message);
});


//Write our post data to the request
request.write(postdata);
//End the request.
request.end();
于 2012-12-04T12:57:05.630 回答
4

如果你需要做的不仅仅是一个 POST,比如使用 RESTful API,我建议你看看restler

它有一个非常简单的 API

var rest = require('restler');

rest.post('http://service.com/login', {
  data: { username: 'foo', password: 'bar' },
}).on('complete', function(data, response) {
  if (response.statusCode == 200) {
    // you can get at the raw response like this...
  }
});
于 2012-05-06T09:14:26.337 回答