2010-08-28 44 views
0

我無法在文檔中找到關於如何執行此操作的任何內容。有權限的節點JS POST方法

http://nodejs.org/api.html#request-method-149

我需要做一個節點JS類似本授權東西在紅寶石POST:

url = URI.parse('http://www.example.com/todo.cgi') 
    req = Net::HTTP::Post.new(url.path) 
    req.basic_auth 'jack', 'pass' 

我想基本上做到這一點:

var client = http.createClient(80, 'http://api.foo.com'); 
    var rq = client.request('POST', '/path/', 
    { 
    'authorization' : [account, password] 
    'key': value, 
    etc.... 
    } 
+1

哇,查看超過1000次,從未upvoted;) – nicholasklick 2011-09-26 03:59:31

回答

3

剛剛編碼使用Buffer在base64中的字符串account:password,並將其設置爲具有標題Authorization,其前綴爲wor d Basic

2

下面是我們更無知的例子(可以改進!)。適用於Twitter的流媒體API。按照常規提出請求時,收聽回覆,然後收聽數據。

var hackClient = http.createClient(80, 'stream.twitter.com'); 
var request = hackClient.request("GET", '/1/statuses/filter.json?'+querystring.stringify(params),{ 
    "Host":"stream.twitter.com", 
    "Authorization":"Basic " + new Buffer('user' + ":" + 'pass').toString('base64'), 
    "User-Agent": "Twitter-Node" 
}); 
request.on('response', function(response) { 
    response.on('data', function(chunk) { 
     stream.receive(chunk); //example usage, no stream object in this example exists 
    }); 
    response.on('error', function(error) { 
     stream.emit('error', error); //again, for example 
    }); 
    response.on('end', function() { 
     stream.emit('end'); 
    }); 
}); 
request.on('error', function(error) { 
    stream.emit('error', error); 
});