node.js使用自定义请求方法执行http请求

时间:2013-11-26 23:29:22

标签: node.js http

我需要使用node.js编写最大的轻量级应用程序,它连接到不同的服务器,并处理来自它的流。在curl中,我可以使用以下命令执行此操作:

curl -X MYOWNMETHOD http://myserver/

我发现它已实施:https://github.com/joyent/node/issues/6422 但是,如果没有额外的中间件,如何才能执行此类请求?也许有人做过类似的事情吗?

我试过像这样使用smth,但回调没有被执行,应用只是挂起..不知道为什么。如果我在任何网站上使用GET请求 - 这是有效的。如果我使用自定义请求 - 套接字挂起。如果我使用curl -X访问服务器 - 这也有效。

var net = require('net');

var options = {
    method : 'OWNMETHOD',
    host : 'someserver',
    port : 80,
    user : 'test',
    password : 'test',
};

var client = net.connect({port: options.port, host: options.host}, function(){
    console.log('client connected');
    client.write(
        options.method + ' / HTTP/1.1\r\n' + 
        'Authorization: Basic ' + new Buffer(options.user + ':' + options.password).toString('base64') + '\r\n' + 
        'User-Agent: sexy/7.26.0\r\n' + 
        'Host: ' + options.host + '\r\n' +
        'Accept: */*\r\n' // should be TWO \r\n to make this work everywhere
    );
});

// Fires only for GET method
client.on('data', function(data) {
  console.log('data');
  //console.log(data.toString());
  //client.end();
});

client.on('end', function() {
  console.log('client disconnected');
});

client.on('timeout', function() {
  console.log('timeout');
});

client.on('close', function() {
  console.log('closed');
});

UPD:发现错误:我忘了在标题中添加第二个\ r \ n。现在它工作正常。

0 个答案:

没有答案