首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用ruby编写对文件的Twitter api请求

如何用ruby编写对文件的Twitter api请求
EN

Stack Overflow用户
提问于 2013-01-26 10:37:21
回答 2查看 489关注 0票数 0

对不起,如果这是显而易见的,我只有5天的ruby经验。我正在尝试将Twitter上最热门的10个话题写到一个json文件中。该接口请求是对https://api.twitter.com/1/trends/1.json的GET请求。我的代码是

代码语言:javascript
复制
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

它给了我一个错误

代码语言:javascript
复制
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调用的所有信息,如果我没有提供任何重要信息的话

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-26 10:55:17

您对Net::HTTP.get的调用不正确,它需要(主机,路径)而不是(主机,端口):

代码语言:javascript
复制
f.write(Net::HTTP.get(uri.host, uri.path))

get方法尝试将您传入的内容视为字符串,这就是导致您看到的异常的原因。

您还可以编写

代码语言:javascript
复制
f.write(Net::HTTP.get(uri.host, uri.path, uri.port))

让它使用https,但这会导致一个空响应(出于某种原因,twitter不喜欢https?)

顺便说一句,v1接口已经被弃用了,我建议使用v1.1中的等效请求:https://dev.twitter.com/docs/api/1.1/get/trends/place

票数 2
EN

Stack Overflow用户

发布于 2013-01-26 12:19:27

就像前面提到的,

代码语言:javascript
复制
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

应该行得通。

然而,让它变得可读是一项困难得多的任务。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14533285

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档