2012-03-13 49 views
4

我有使用捲曲bash腳本:使用Ruby的Net :: HTTP捲曲任務

url="https://example.com/api.cgi" 
message="<?xml version=\"1.0\" encoding=\"utf-8\"?> 
<request> 
    <encoding>utf-8</encoding> 
    <format>XML</format> 
    <foo>bar</foo> 
</request>" 

curl --data "${message}" --header 'Content-Type: text/xml' "${url}" --insecure -3 

如何實現相同的紅寶石的Net :: HTTP?

+0

如果您喜歡捲曲,請使用'curb'。它比'net/http'更具彈性,但不能在jruby上運行。 – Reactormonk 2012-03-13 10:32:47

回答

2

如果您使用的是自簽名證書,下面是禁用SSL驗證的示例。

require "net/http" 
require "uri" 

uri = URI.parse("https://mysite.com/api.cgi") 

message="<?xml version=\"1.0\" encoding=\"utf-8\"?> 
<request> 
    <encoding>utf-8</encoding> 
    <format>XML</format> 
    <foo>bar</foo> 
</request>" 

http = Net::HTTP.new(uri.host, uri.port) 
#http.use_ssl = true 
http.verify_mode = OpenSSL::SSL::VERIFY_NONE 

request = Net::HTTP::Post.new(uri.request_uri) 
request.content_type = "text/xml" 
request.body = message 
response = http.request(request) 

p response.body