新手问题 ruby 使用 rest-client 一直无法成功,求助各位大佬!

hopenofool · 2019年05月22日 · 最后由 hopenofool 回复于 2019年05月24日 · 1922 次阅读

我在控制台发送 curl 命令如下

curl -v http://124.205.41.149:8080/jenkins/job/pinpoint_single_machine_scan/build -F file0=@@/home/git/gitlab/public/uploads/topinpoint.zip -F json='{"parameter": [{"name":"PP_PRECISION","value": "normal"},{"name": "PP_JAVA_MODE", "value": "jar"},{"name": "PP_PROJECT_NAME", "value": "thirdpipeline1"},{"name":"upload/project.zip", "file":"file0"}]}' --user admin:1243758e195b1073e663144699134375d9

我想在 ruby 代码中实现,最终采用了 rest-client,我的代码如下,试了很多次,主要是下面两种,参数一直在调

1.

response = RestClient::Request.execute(
      :method => :post,
      :url => 'http://124.205.41.149:8080/jenkins/job/pinpoint_single_machine_scan/build',
      :user => 'admin',
      :password => '1243758e195b1073e663144699134375d9',
      :payload => {
        :multipart => true,
        :file => File.new("#{Rails.root}/public/uploads/topinpoint.zip", 'rb'),
        :parameter => [
          {"name" => "PP_PRECISION"," value" => "normal"},
          {"name" => "PP_JAVA_MODE", "value" => "jar"},
          {"name" => "PP_PROJECT_NAME", "value" => "thirdpipeline1"},
          {"name" => "upload/project.zip", "file" => "file0"}
        ]
      }
    )

2.

RestClient.post('http://124.205.41.149:8080/jenkins/job/pinpoint_single_machine_scan/build',
    {
      :user => 'admin',
      :password => '1243758e195b1073e663144699134375d9',
      :parameter => [
        {"name" => "PP_PRECISION"," value" => "normal"},
        {"name" => "PP_JAVA_MODE", "value" => "jar"},
        {"name" => "PP_PROJECT_NAME", "value" => "thirdpipeline1"},
        {"name" => "upload/project.zip", "file" => "file0"}
      ],
      :upload => {
        :file => File.new("#{Rails.root}/public/uploads/topinpoint.zip", 'rb')
      }
    })

感觉是自己写法有问题,因为我的curl中既有附件,还有参数数组,求解,折腾了好久,特来请教,先谢谢大家了🙏

jenkins 应该有 sdk 吧。。

pynix 回复

安装这个似乎需要 ruby 版本 2.2 以上,我们项目版本是 2.1.7😭

ERROR:  Error installing jenkins_api_client:
    mixlib-shellout requires Ruby version >= 2.2.
hopenofool 回复

升级吧,2.1 早就停止支持了。。

heroyct 回复

大佬,好像不行,首先复制之后参数没了,关键是这个是转 net:http 的,net/http 似乎不支持文件的上传。。

pynix 回复

暂时不会升级,只能用 rest-client 来改了,试了好几天了,试不出来😭

楼主不会真的贴了密码出来吧?赶紧改密码。

Rei 回复

ip 地址不是真的,已经换过了。

我这种带文件,又有数组参数,请求的话一直是 400(Bad Request)。

hopenofool 回复

那你只能怪自己命苦了,

nethttp 是可以上传文件的,主要你参数有问题,你看文件上传参数修改下试试,用网络图片 url 试试

hopenofool 回复

有试过低版本的 gem 包吗?

pynix 回复

不消极了,我好好研究下,感谢提供 api。

darksky 回复

好的,我看下。

martin91 回复

没,我找下,试下。

Rei 回复

内网吧。。。

darksky 回复

已实现,谢谢大家~

hopenofool 关闭了讨论。 05月24日 16:54
需要 登录 后方可回复, 如果你还没有账号请 注册新账号