2011-04-24 7 views
0

외부 URL에 POST 매개 변수를 사용하여 레일 3에서 일부 웹 서비스를 호출하려면 어떻게해야합니까? 난 보통 다음은 내 보석 중 하나에서 추출 무엇을 기대 달성하기 자세한 것을 방법입니다 명령 줄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 기본 인증을 수행하는 경우 URL (https : // username : [email protected])에서이를 그냥 쳐야합니다. Github은 유용하게 내 가짜 링크를 실제 링크로 만들지 만 아이디어를 얻을 수 있습니다. – mikewilliamson

0

에서 게시하려면이 같은 것을 사용합니다.

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 

편집 :

이 포함되어 있는지 확인해야합니다 :

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

EDIT2 : 당신이 편안하고 웹 서비스와 상호 작용하는 경우

, 사용을 고려 ActiveResource

+0

감사 인 HTTParty 제안하지 않았 음을 충분히 재미있는! 나는 단지 하나의 질문을 가지고 있는데, -u 옵션을 어떻게 넘겨 줄 것인가? – ed1t

+0

인증을 원하면 다음과 같이 게이트웨이를 변경하십시오. http : // login : pass @ www.example.com/todo.cgi' – apneadiving

+0

doc here : http://ruby-doc.org/stdlib/libdoc/net /http/rdoc/classes/Net/HTTP.html – apneadiving

0

당신은 ActiveResource을 사용할 수 있습니다, 그것은 레일 패키지의 일부입니다 : 여기에 바로 그 문서의 예입니다.