将cURL从PHP转换为ruby代码

时间:2015-10-06 13:53:47

标签: php ruby-on-rails ruby curl

我正在尝试为用户创建一个表单,使用他们的“手机刮刮卡”从我的Ruby on Rails网站上购买产品。

问题是该服务仅提供PHP的模块代码。所以我必须将它转换为Ruby才能进入我的网站。以下是我想要转换为Ruby的代码:

$post_field = 'xyz=123&abc=456';

$api_url = "https://www.nganluong.vn/mobile_card.api.post.v2.php"; 

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$api_url);
curl_setopt($ch, CURLOPT_ENCODING , 'UTF-8'); 
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_field); 
$result = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
$error = curl_error($ch);

我试图将它们转换为Ruby代码,但总是感到困惑。谁能帮助我将这些代码转换为可用的Ruby代码?提前谢谢!

到目前为止,这是我的愚蠢代码:

RestClient.post($api_url, $post_field, "Content-Type" => "application/x-www-form-urlencoded")

基本上我需要的是php curl代码的ruby版本。我是新手,不是经验丰富的程序员,所以请帮助。

2 个答案:

答案 0 :(得分:1)

所有代码都在通过POST请求向指定的URL发送有效负载xyz=123&abc=456

您可以使用例如这个curb宝石:

response = Curl.post("https://www.nganluong.vn/mobile_card.api.post.v2.php", {:xyz => 123, :abc => 456})
result = response.body_str
status = response.status

答案 1 :(得分:1)

尝试这样的事情:

require 'rest-client'
require 'rack'

post_query = 'xyz=123&abc=456'
api_url = "https://www.nganluong.vn/mobile_card.api.post.v2.php"

query_hash = Rack::Utils.parse_nested_query(post_query)

begin
  response = RestClient.post api_url, :params => query_hash
  print response.code
  print response.body
rescue Exception => e
  print e.message
end