2011-04-24 17 views
0

POSTパラメータを外部URLに使用して、レール3でいくつかのWebサービスを呼び出すにはどうすればよいですか?私は通常、ここでは、コマンドラインからPOST in rails 3

curl -X POST -u "v10REVkw:XuCqIhyCw" \ 
-H "Content-Type: application/json" \ 
--data '{"apids": ["c80-d363237c-e513b"], "android": {"alert": "Android Test!"}}' \ 
https://url/to/push 

答えて

2

Iを使用することを検討してください私はRest clientを使用すると思います。

RestClient.post "http://example.com/resource", { 'x' => 1 }.to_json, :content_type => :json, :accept => :json 
+0

これは素晴らしいリソースです。共有に感謝します:) +1;) – apneadiving

+0

どのようにユーザー名を渡しますか? – ed1t

+0

http basic authを実行している場合は、URL:https:// username:[email protected]でスラップできるだけです。 Githubは有益にも私の偽のリンクを実際のものにしていますが、あなたはそのアイデアを得ます。 – mikewilliamson

0

を投稿するために、このようなものを使用しますが、私の宝石の1から抽出された期待達成するdetailled方法です。

remoteで調整してください。

def remote 
    begin 
    Net::HTTP.get_response((uri)).body 
    rescue 
    #what you want here 
    end 
end 

def gateway 
    'http://api.opencalais.com/enlighten/rest/' 
end 

def uri 
    URI.parse(gateway + '?' + URI.escape(post_params.collect{ |k, v| "#{k}=#{v}" }.join('&'))) 
end 

def post_params 
    { 
    'licenseID' => @api_key, 
    'content' => @context 
    } 
end 

EDIT:

は、あなたがこの含まれていることを確認してください:

require 'uri' 
require 'net/http' 
require 'open-uri' 

EDIT2:

あなたがRESTfulなWebサービスと対話している場合は、ActiveResource

+0

感謝!私はちょうど1つの質問がある、私はどのように-uオプションを渡すのですか? – ed1t

+0

認証が必要な場合は、次のようにゲートウェイを変更します。http:// login:pass @ www.example.com/todo.cgi' – apneadiving

+0

docここをクリック:http://ruby-doc.org/stdlib/libdoc/net /http/rdoc/classes/Net/HTTP.html – apneadiving

0

あなたはActiveResourceを使用することができ、それはRailsのパッケージの一部である:ここではまっすぐ自分のドキュメントからの例があります。

誰がこれまで私見そこに、最も単純なHTTPのLIBSの一つである、HTTPartyを示唆していないしていないことを十分に興味深い