2011-12-15 21 views
0

私はRubyとRailsでかなり新しいです。このHTTPS POSTリクエストをrubyに書き込む方法は?

私はRailsアプリケーションでHTTP POSTリクエストを送信したい

は、要求は次のようなコマンドラインで起動することができ :

curl -X POST -u "username:password" \ 
    -H "Content-Type: application/json" \ 
    --data '{"device_tokens": ["0C676037F5FE3194F11709B"], "aps": {"alert": "Hello!"}}' \ 
    https://go.urbanairship.com/api/push/ 

私は(実際にはグルーコードです)書いたRubyのコードは次のとおりです。

uri = URI('https://go.urbanairship.com/api/push') 
Net::HTTP.start(uri.host, uri.port, :use_ssl => uri.scheme == 'https') do |http| 
    request = Net::HTTP::Post.new(uri.request_uri, initheader = {'Content-Type' =>'application/json'}) 
    request.basic_auth 'username', 'password' 
    request.body = ActiveSupport::JSON.encode({'device_tokens' => ["4872AAB82341AEE600C6E219AA93BB38B5144176037F2056D65FE3194F11709B"], "aps" => {"alert" => "Hello!"}}) 
    response = http.request request # Net::HTTPResponse object 
    puts response.body 
end 

しかし、Railsコンソールでルビーコードを実行しても、期待通りの結果は得られませんでした(コマンド行では)。誰かが私に手を差し伸べることができる?私は関連する投稿とRubyのドキュメントを検索しようとしましたが、Rubyに関する私の知識はそれを解決するには十分ではありません。

+1

おそらくこの質問はあなたを助けることができるようになりますhttp://stackoverflow.com/questions/1719809/ruby-on -rails-https-post-bad-request – kaissun

+0

こんにちは、私は記事を読んだが、分かりませんでした –

答えて

1

小さなクライアントクラスを作成することはしばしば賢明です。私はそのためHTTPartyが好き:

require 'httparty' 

class UAS 
    include HTTParty 

    base_uri "https://go.urbanairship.com" 
    basic_auth 'username', 'password' 
    default_params :output => 'json' 
    @token = "4872AAB82341AEE600C6E219AA93BB38B5144176037F2056D65FE3194F11709B" 

    def self.alert(message) 
    post('/api/push/', {'device_tokens' => @token, 'aps' => {"alert" => message}}) 
    end 
end 

次にあなたがそうのようにそれを使用します。

UAS.alert('Hello!') 
3
require 'net/http' 
require 'net/https' 

https = Net::HTTP.new('go.urbanairship.com', 443) 
https.use_ssl = true 
path = '/api/push' 
関連する問題