2012-07-09 4 views
10

ho capito come fare una richiesta HTTP utilizzando l'autenticazione di base con Ruby rest-clientRubino upload di file resto-client come dati del modulo a più parti con authenticaion base

response = RestClient::Request.new(:method => :get, :url => @base_url + path, :user => @sid, :password => @token).execute 

e come inviare un file come dati del modulo a più parti

RestClient.post '/data', :myfile => File.new("/path/to/image.jpg", 'rb') 

ma non riesco a capire come combinare i due al fine di inviare un file su un server che richiede l'autenticazione di base. Qualcuno sa qual è il modo migliore per creare questa richiesta?

+1

su una nota non correlata: si dovrebbe accettare altre risposte, la sua buona pratica ... – robustus

risposta

20

Come sull'utilizzo di un RestClient::Payload con RestClient::Request ... Per un esempio:

request = RestClient::Request.new(
      :method => :post, 
      :url => '/data', 
      :user => @sid, 
      :password => @token, 
      :payload => { 
      :multipart => true, 
      :file => File.new("/path/to/image.jpg", 'rb') 
      })  
response = request.execute 
0

Il modo migliore più recente può essere che: il collegamento è enter link description here

RestClient.post(url, 
    { 
    :transfer => { 
     :path => '/foo/bar', 
     :owner => 'that_guy', 
     :group => 'those_guys' 
    }, 
    :upload => { 
     :file => File.new(path, 'rb') 
    } 
    }) 
0

Ecco un esempio con un file e alcuni dati json:

require 'rest-client' 

payload = { 
    :multipart => true, 
    :file => File.new('/path/to/file', 'rb'), 
    :data => {foo: {bar: true}}.to_json 
     } 

r = RestClient.post(url, payload, :authorization => token) 
0

L'API RestClient sembra essere stata modificata. Ecco l'ultimo modo per caricare un file utilizzando autenticazione di base:

response = RestClient::Request.execute(
    method: :post, 
    url: url, 
    user: 'username', 
    password: 'password', 
    timeout: 600, # Optional 
    payload: { 
    multipart: true, 
    file: File.new('/path/to/file, 'rb') 
    } 
)