我目前正在尝试使用NodeJS,并尝试使用Twitter-Search API。对于curl,它工作得很好-所以我的防火墙或其他什么都没有问题。然而,我在NodeJS中从来没有得到过响应。
var sys = require("sys"),
http = require("http"),
events = require("events");
sys.puts("Hi there… ");
var client = http.createClient(80, "search.twitter.com"),
body = "",
query = "foobar";
function getResults() {
sys.puts("fetching for "+query);
var request = client.request("GET", "/search.json?q="+query);
request.on("response", function(data){
/* this somehow never gets fired :( */
sys.puts("BODY:"+ data);
});
}
var interval = setInterval(getResults, 5000);还有URL is also working。
欢迎任何提示或解决方案!
提前谢谢。
发布于 2010-12-09 21:21:44
You 请求不会发送。
您需要使用request.end()
注意:请求未完成。此方法仅发送请求的标头。需要调用request.end()来完成请求并检索响应。(这听起来很复杂,但它为用户提供了使用request.write()将正文流式传输到服务器的机会。)
此外,response事件的参数是response object ,而不是主体。您需要在response object上设置data事件,然后侦听end事件,以确保您获得了所有数据。
request.on('response', function (response) {
var body = '';
response.on('data', function (chunk) {
body += chunk;
});
response.on('end', function () {
console.log('BODY: ' + body);
});
});
request.end(); // start the request请参阅:http://nodejs.org/api/http.html#http_class_http_clientrequest
更多提示
你可能想要使用querystring.escape对你的搜索进行
querystring.escape头,否则Twitter会返回一个404修复代码:
var querystring = require('querystring');
...
var request = client.request("GET", "/search.json?q=" + querystring.escape(query), {'Host': 'search.twitter.com'});https://stackoverflow.com/questions/4398585
复制相似问题