1

Twitter Streaming APIにアクセスするために、node.jsに次のコードを記述しています。curl以下のURLであれば動作します。ただし、コードで動作させることができません。

var https = require('https');

https.request('https://USERNAME:PASSWORD@stream.twitter.com/1.1/statuses/sample.json', function(res) {
  res.on('data', function(chunk) {
    var d = JSON.parse(chunk);
    console.log(d);
  });
});

しかし、私は以下を受け取ります

node.js:201
        throw e; // process.nextTick error, or 'error' event on first tick
              ^
Error: connect EADDRNOTAVAIL
    at errnoException (net.js:642:11)
    at connect (net.js:525:18)
    at Socket.connect (net.js:589:5)
    at Object.<anonymous> (net.js:77:12)
    at new ClientRequest (http.js:1073:25)
    at Object.request (https.js:80:10)
    at Object.<anonymous> (/Users/jordan/Projects/twitter-stream/app.js:3:7)
    at Module._compile (module.js:441:26)
    at Object..js (module.js:459:10)
    at Module.load (module.js:348:31)

誰かが別の解決策を提供したり、これがうまくいかない理由を私に説明したりすることができれば、私は非常に感謝しています。

4

5 に答える 5

4

私は最近同じ問題に直面しました。これが解決策です

 var https = require('https');   
 var options = {   
   host : 'stream.twitter.com',   
   path : '/1.1/statuses/filter.json?track=bob',    
   method : 'GET',  
   headers : {   
   "Authorization": "Basic "+new Buffer("userName:passwd").toString("base64")
  }   
 };
 var request = https.request(options,function(response){   
   var body = '';
   response.on("data",function(chunk){    
    var tweet = JSON.parse(chunk);  
    console.log(tweet.text);  
  });  
 });  
 request.end();
于 2012-11-13T10:49:08.810 に答える
0

jstは、プロセスノードを強制終了するkillall nodeps -aux|grep node、IDを使用してプロセスを強制終了します。これで機能します。Linuxで実行している場合はそうです。

于 2012-11-13T13:35:15.437 に答える
0

https.request()文字列URLではなく、最初の引数としてオプションオブジェクトが必要です。ただし、文字列URLを使用するmikealのリクエストライブラリを使用する方がおそらく良いでしょう。

于 2012-09-09T03:35:32.403 に答える
0

1)ebohlmanがすでに述べたように、https.requestは最初のパラメーターとしてoptionsオブジェクトを取ります。

http://nodejs.org/api/https.html#https_https_request_options_callback

2)「データ」イベントがすべてのチャンクで発行され、応答がより多くのチャンクにまたがる可能性があるため、JSON.parseは失敗する可能性が高いため、応答が終了するまで待機します。

var data = ""
res.on('data',function(chunk){
   data+=chunk
})
res.on('end',function(){
  try  {
     var parsed = JSON.parse(data)
  } catch(e) {
     console.log('failed to parse...',e)
  }
})
于 2012-09-09T17:28:02.963 に答える
0

同じ問題に直面しました。問題は、古いバージョンのNodejs(v0.6.19)を使用していることでした。そのバージョンでは、 http.getは、少なくともホスト属性とパス属性を持つオプションオブジェクトとして最初のパラメーターを必要とします。新しいバージョンでは、URL文字列を指定するだけです。

http.get({host:'www.google.com',path:'/index.html'}, function(res) {
  console.log("Got response: " + res.statusCode);
}).on('error', function(e) {
  console.log("Got error: " + e.message);
});
于 2013-01-03T00:10:44.100 に答える