我一直在尝试构建一个使用 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 并不重要,所以如果您知道更好的方法,请随时分享!

提前致谢!

有帮助吗?

解决方案

你可以像这样重写它

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 必须是: http://www.reddit.com/api/login/USERNAME (带有 www),你应该通过 api_type 请求中的参数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top