从Ruby到Perl,Post数据正在消失

时间:2015-09-29 19:11:06

标签: ruby perl rest curl cgi

我试图模仿以下完美运行的curl命令:

curl -k -i -d @content.json -H "Content-Type: application/json" -H "Accept: applicaztion/json" https://localhost:909/api/authenticateUser

我在Ruby / rails中模仿curl命令。我正在使用rest-client gem。目标是用旧式Perl编写的API。问题是API没有"看到"在新的ruby代码中发送的有效负载:

pload = '<string>'.to_json
response = RestClient::Request.execute(url: 'https://localhost:909/api/authenticateUser', method: :post, payload: pload, accept: :json, content_type: :json, verify_ssl: false)

出了什么问题?我的Ruby代码是坏的还是Perl代码&#34;太愚蠢/旧&#34;从红宝石中获取有效载荷。这是Perl代码:

my $data = $cgi->param('POSTDATA') || "";

我倾向于认为问题出在我的ruby代码上,因为旧的Perl代码从上面的curl命令和其他一些旧的Perl代码中正确地接收了有效负载。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

要填充POSTDATA

  1. 请求必须具有Content-Length标头
  2. 请求的Content-Length标头的值必须为非零。
  3. 请求方法必须为POST
  4. 请求必须具有Content-Type标头。
  5. 请求的Content-Type标头的值不得包含以下任何内容:

    • 应用程序/ x-WWW窗体-urlencoded
    • 的multipart / form-data的
    • 应用/ XML
    • 多部分/相关