簡體   English   中英

如何使用rest-client將cURL multipart / form-data POST請求轉換為ruby請求?

[英]How to convert a cURL multipart/form-data POST request to ruby request using rest-client?

我必須使用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執行multipart / form-data請求的正確方法嗎?

我看到cURL請求中有以下內容,在任何地方的ruby請求中都沒有考慮到。

{"type":"formData"}

我需要為此做些額外的事情嗎?

我通過將請求更改為以下內容來解決我的特定情況(我需要將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標頭的內容類型也需要設置。

希望它可以幫助那些尋找這樣的東西的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM