0

我一直在尝试构建一个将使用 Reddit 的 API 的小机器人。我可以分解并毫无问题地阅读我收到的所有信息,但我还不能发送任何东西。

我想做的是: 将准备好的 JSON 字符串发送到http://www.reddit.com/api/login并在成功或失败时得到某种响应。

如果您需要有关 Reddit API 的更多信息:https ://github.com/reddit/reddit/wiki/API

这是我到目前为止所拥有的:

require 'rubygems'
require 'httparty'
require 'json'
require 'pp'

class Login
  include HTTParty
  base_uri 'reddit.com/'
  default_params :output => 'json'
  format :json
  def post(message)
    options = {:body => JSON.generate(message)}
    self.class.post('api/login', options)
  end
end

login = Login.new()
pp login.post({'username' => 'USERNAME', 'passwd' => 'PW'})

这段代码给了我以下错误:

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/1.8/net/http.rb:1060:in `request': undefined method `closed?' for nil:NilClass (NoMethodError)

即使一段非常相似的代码会发布到 Twitter。另外,我不确定我的代码是否真的得到了网站的某种响应。

对我来说,是否使用 HTTParty 并不重要,所以如果您知道更好的方法,请随时分享!

提前致谢!

4

1 回答 1

2

你可以像这样重写它

class Login
  include HTTParty
  base_uri 'http://www.reddit.com'

  def post(username, password)
    options = {:body => {:user => username, :passwd => password, :api_type => 'json'}}
    self.class.post("/api/login/#{username}", options)
  end
end

Login.new.post('user', 'pass')

请记住,用于登录的 API url 必须是:(带有 www)并且您应该在请求中http://www.reddit.com/api/login/USERNAME传递参数。api_type

于 2012-03-01T21:07:58.630 回答