2014-01-14 20 views
4

我正在發佈到api。從文檔此示例工作在捲曲:什麼是Ruby等同於這個捲曲請求?

curl -k -w %{http_code} -H "Content-Type:text/plain" -u user:pass --data-binary @filename https://server/url/here 

這就是我與法拉第嘗試:

require 'rubygems' 
require 'faraday' 
require 'pp' 

conn = Faraday.new(:url => 'https://server/url/here' , :ssl => {:verify => false}) do |faraday| 
    faraday.response :logger 
    faraday.basic_auth('user', 'pass') 
    faraday.adapter Faraday.default_adapter 
end 

data = File.read('teste.txt') 

res=conn.post '/' , data 
pp res 

它的帖子,我收到了200碼,但不順心的事。響應是服務器的登錄頁面。

curl -u是否相當於basic auth?

+0

重複這種http://stackoverflow.com/questions/929652/equivalent-of-curl-for-ruby?rq=1 –

+0

我不能看看它在哪裏複製。 –

+0

對不起,忘了吧。你能提供實際的API網址嗎? –

回答

0

我知道你問的是法拉第的寶石,但這裏是我會怎樣使用「其餘客戶端」寶石都做到了,也許這可以幫助:

response = RestClient.post "https://user:[email protected]/url/here", data, 
          :content_type => 'text/plain' 
3

這看起來正確的,唯一不同的是可能是在Content-Type頭,這應該工作:

require 'rubygems' 
require 'faraday' 
require 'pp' 

conn = Faraday.new(:url => 'https://server/url/here' , :ssl => {:verify => false}) do |faraday| 
    faraday.response :logger 
    faraday.basic_auth('user', 'pass') 
    faraday.adapter Faraday.default_adapter 
end 

data = File.read('teste.txt') 

res = conn.post do |req| 
    req.headers['Content-Type'] = 'text/plain' 
    req.body = data 
end 

pp res