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 はhttp://www.reddit.com/api/login/USERNAME(www を含む) である必要がapi_typeあり、リクエストで param を渡す必要があることを覚えておいてください。

于 2012-03-01T21:07:58.630 に答える