gpt4 book ai didi

node.js - request.on ("response",[…]) 永远不会被解雇

转载 作者:搜寻专家 更新时间:2023-10-31 22:40:25 24 4
gpt4 key购买 nike

我目前正在研究 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 .

欢迎任何提示或解决方案!

提前致谢。

最佳答案

从不发送请求。

你需要使用request.end()

NOTE: the request is not complete. This method only sends the header of the request. One needs to call request.end() to finalize the request and retrieve the response. (This sounds convoluted but it provides a chance for the user to stream a body to the server with request.write().)

此外,response 事件的参数是response object NOT 主体。您需要在 response 对象 上设置 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

更多提示

  1. 您可能想使用 querystring.escape 对您的搜索参数进行 urlencode
  2. 您还需要设置 Host header ,否则 Twitter 将返回 404

固定代码:

var querystring = require('querystring');
...
var request = client.request("GET", "/search.json?q=" + querystring.escape(query), {'Host': 'search.twitter.com'});

关于node.js - request.on ("response",[…]) 永远不会被解雇,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4398585/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com