对不起,如果这是显而易见的,我只有5天的ruby经验。我正在尝试将Twitter上最热门的10个话题写到一个json文件中。该接口请求是对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调用的所有信息,如果我没有提供任何重要信息的话
发布于 2013-01-26 10:55:17
您对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?)
顺便说一句,v1接口已经被弃用了,我建议使用v1.1中的等效请求:https://dev.twitter.com/docs/api/1.1/get/trends/place
发布于 2013-01-26 12:19:27
就像前面提到的,
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应该行得通。
然而,让它变得可读是一项困难得多的任务。
https://stackoverflow.com/questions/14533285
复制相似问题