Nil*_*ann 5 httpclient node.js
我目前正忙着使用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);
Run Code Online (Sandbox Code Playgroud)
并且URL也正常工作.
欢迎任何提示或解决方案!
提前致谢.
你永远不会发送请求.
你需要使用 request.end()
注意:请求未完成.此方法仅发送请求的标头.需要调用request.end()来完成请求并检索响应.(这听起来很复杂,但它为用户提供了使用request.write()将正文流式传输到服务器的机会.)
另外,response活动的参数是response object 不是身体.您需要在该data事件上设置事件response object,然后监听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
Run Code Online (Sandbox Code Playgroud)
请参阅:http://nodejs.org/api/http.html#http_class_http_clientrequest
还有一些提示
querystring.escapeurlencode搜索参数Host标题,否则Twitter将返回404固定代码:
var querystring = require('querystring');
...
var request = client.request("GET", "/search.json?q=" + querystring.escape(query), {'Host': 'search.twitter.com'});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7500 次 |
| 最近记录: |