当前位置: 首页 > 知识库问答 >
问题:

如何使用rest-client将cURL multipart/form-data POST请求转换为ruby请求?

司马狐若
2023-03-14

我必须使用REST-Client在Ruby中实现下面列出的curl POST请求,以便我可以将文件上传到我的服务器。

curl -X POST --header 'Content-Type: multipart/form-data' --header 'Accept: application/json' --header 'Authorization: Basic jhdsjhdshjhdshdhh' --header 'tenant-code:djdjhhsdsjhjsd=' {"type":"formData"} 'https://myserver.com/blobs/upload?fileName=some.ipa&groupId=098'

我尝试了以下内容 -

require 'rest-client'
require 'json'

payload = {
    :multipart => true,
    :file => File.new(path_to_file, 'rb')
}

response = RestClient.post("https://myserver.com/blobs/upload?fileName=some.ipa&groupId=098", payload, {accept: :json, 'tenant-code':"djdjhhsdsjhjsd=", 'Authorization': "Basic jhdsjhdshjhdshdhh"})

当我从服务器获得200响应时,这工作正常。但是,当我检查服务器上的上传文件时,它已损坏。

这是使用 ruby 进行多部分/表单数据请求的正确方法吗?

我看到在cURL请求中有以下内容,这在任何地方都没有在红宝石请求中考虑。

{"type":"formData"}

我需要为此做些额外的事情吗?

共有1个答案

闾丘晨
2023-03-14

我针对我的具体情况解决了这个问题(我需要将一个IPA文件上传到我的企业应用商店),方法是将请求更改为以下内容

require 'rest-client'
require 'json'

response = RestClient::Request.execute(
  :url => "https://myserver.com/blobs/upload?fileName=some.ipa&groupId=098",
  :method => :post,
  :headers => {
    'Authorization' => "Basic jhdsjhdshjhdshdhh",
    'tenant-code' => "djdjhhsdsjhjsd=",
    'Accept' => 'application/json',
    'Content-Type' => 'application/octet-stream',
    'Expect' => '100-continue'
  },
  :payload => File.open(path_to_file, "rb")
)

基本上,内容类型需要是八位字节流,Expect头也需要设置。

希望它能帮助那些来寻找这样的东西的人。

 类似资料:
  • 我向我的flask应用所在的服务器发出了python post请求。它运行良好,我能够获得所需的数据。 但我想用POSTMAN测试API。我无法做到这一点,因为在某种程度上我对邮递员并不熟悉。 下面是我的python代码。 我正在努力解决这样一个问题:我试图发布到服务器上的数据和文件应该是原始json还是表单数据,或者是正文的x-www-form-urlencoded部分。还有实际的结构应该是什么

  • 问题内容: 我有以下CURL请求,谁能请我确认subesquest HTTP请求是什么? 会是这样吗? 任何人都可以帮助我将上述curl请求完全转换为httpreq。 提前致谢。 苏维 问题答案: 有很多方法可以实现这一目标。在我看来,以下一项是最简单的,同意它不是很灵活,但是可以工作。

  • 我正在尝试为我的PHP网站使用外展API。关于外联,这是他们提到的要求: 邮递https://api.outreach.io/api/v2/prospects {“data”:{“attributes”:{“firstName”:“Test_3”,“lastName”:“API”},“type”:“prospect”} 在PHP中,我将其转换为以下代码,但它给出了错误“错误请求”。请帮助我我做错了

  • 我正在尝试将curl中的以下工作请求转换为python请求(使用请求http://docs.python-requests.org/en/v0.10.7/). (请注意,我使用了一个假url,但该命令确实适用于真实url) 接收端(在烧瓶中运行)执行以下操作: 在curl(7.30)中,在Mac OS X(10.9)上运行,上面的命令正确返回使用标记查询过滤的json列表。 我的python脚本如

  • 我试图使用Postman而不是Web服务的API文档提供的终端命令来请求数据。 curl命令如下: 我怎么能在邮递员内申请这个?我尝试添加和作为请求参数,但这不起作用

  • 所以我得到了这个简单的HTML表单 这允许我上传一个映像并将其发布到服务器上,在服务器上由“upload.php”脚本处理。 如下所示 如果可以在JavaScript中完全做到这一点,我很想知道。 周末愉快:)