簡體   English   中英

如何將Twitter api請求寫入ruby中的文件

[英]How to write a Twitter api request to a file in ruby

對不起,如果這很明顯,我只有5天的紅寶石經驗。 我試圖將Twitter上的前10個熱門話題寫成json文件。 API請求是對https://api.twitter.com/1/trends/1.json的GET請求。 我的代碼是

require "net/http"
require "uri"
require "JSON"

uri = URI.parse("https://api.twitter.com/1/trends/1.json")

File.open("test.json", "w") do |f|
  f.write(Net::HTTP.get(uri.host, uri.port))
end

它給了我一個錯誤

D:/Program Files/ruby-1.9.2/lib/ruby/1.9.1/net/http.rb:1668:in 'initialize': undefined method 'empty?' for 443:Fixnum (NoMethodError) from 
D:/Program Files/ruby-1.9.2/lib/ruby/1.9.1/net/http.rb:1787:in 'intialize' from 
D:/Program Files/ruby-1.9.2/lib/ruby/1.9.1/net/http.rb:1081:in 'new' from D:/Program Files/ruby-1.9.2/lib/ruby/1.9.1/net/http.rb:1081:in 'request_get' from 
D:/Program Files/ruby-1.9.2/lib/ruby/1.9.1/net/http.rb:389:in 'block in get_response' from 
D:/Program Files/ruby-1.9.2/lib/ruby/1.9.1/net/http.rb:627:in 'start' from 
D:/Program Files/ruby-1.9.2/lib/ruby/1.9.1/net/http.rb:388:in 'get_response' from 
D:/Program Files/ruby-1.9.2/lib/ruby/1.9.1/net/http.rb:370:in 'get' from test:8:in 'block in (main)'

對此的任何幫助都會很棒

編輯: https//dev.twitter.com/docs/api/1/get/trends/%3Awoeid是我正在使用的API調用的所有信息,如果我錯過了提供任何重要信息

您對Net :: HTTP.get的調用不正確,它期望(主機,路徑)而不是(主機,端口):

f.write(Net::HTTP.get(uri.host, uri.path))

get方法嘗試將您傳入的內容視為字符串,這是導致您看到的異常的原因。

你也可以寫

f.write(Net::HTTP.get(uri.host, uri.path, uri.port))

要使它使用https,但這會導致空響應(由於某種原因,twitter不喜歡https?)

順便說一下,api v1已棄用,我建議轉到v1.1等效請求: https//dev.twitter.com/docs/api/1.1/get/trends/place

如前所述,

require "net/http"
require "uri"
require "JSON"

uri = URI.parse("https://api.twitter.com/1/trends/1.json")  

File.open("test.json", "w") do |f|
   f.write(Net::HTTP.get(uri.host, uri.path)) 
end

應該管用。

然而,使其可讀是一項更艱巨的任務。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM