2009-12-01 35 views
1

我嘗試使用下面的代碼發佈表單數據到谷歌結帳:網/ http和發佈數據,谷歌Checkout的

x = Net::HTTP.post_form(URI.parse('https://checkout.google.com/api/checkout/v2/checkoutForm/Merchant/[merchant_number_here]'), @params) 

當我嘗試使用該行提交,我得到以下錯誤:在PaymentsController#

變量Errno :: ECONNRESET創建由同行

上有什麼可以去錯任何想法
連接復位?

回答

0

爲了讓Net :: HTTP執行HTTPS發佈,你需要做的更多。 Paul Goscicki在他的文章Custom HTTPS Queries in Ruby中有一個很好的總結,包括示例代碼。

我個人建議看看Mechanize。它更快更容易使用,並具有一系列不錯的功能,包括跟蹤重定向&處理cookie的能力。

2

方法post_form嘗試通過HTTP甚至是uri進行連接是HTTPS。您需要明確告訴net/http應該使用安全連接。下面的腳本應該做你想做的。您可以使用set_debug_output方法來調試Google返回的響應。

require 'net/http' 
require 'net/https' 

url = URI.parse('https://checkout.google.com/api/checkout/v2/checkoutForm/Merchant/1234567890') 
req = Net::HTTP::Post.new(url.path) 

req.set_form_data({'my'=>'params'}) 
res = Net::HTTP.new(url.host, url.port) 
res.use_ssl = true 

#send the response to stderr for debugging 
res.set_debug_output $stderr 

res.start {|http| http.request(req) }