2016-04-27 42 views
0

我設置標題是這樣的: file所在的test.txt如何在使用HTTParty POST發送文件時設置Content-Length和Content-Type標題?

size = File.size(file) 

h = { 
    "Content-Type":  'text/plain' 
    "Content-Length":  size.to_s, 
    "Other-Header":  'some-header'  
} 

b = File.read(file) 

HTTParty.post('/some/api/url', {headers: h , body: b}) 

頭獲取設置這樣的請求:

<- "POST /some/api/url\r\n 
Content-Type: text/plain\r\n 
Content-Length: 16\r\n 
Other-Header: some-header\r\n 
Connection: close\r\n 
Host: somehost.com\r\n 
Content-Length: 16\r\n 
Content-Type: application/x-www-form-urlencoded\r\n\r\n" 

的Content-Length和Content-Type添加並且複製,除了Transfer-Encoding被設置爲分塊。

如何設置Content-Length,Content-Type和Transfer-Encoding並避免HTTParty自行設置它們?

希望它很清楚。

Thx爲您的時間!

+0

你怎麼試圖通過將這些頭自己達到什麼目的? – spickermann

+0

我正在嘗試使用Backblaze.com api上傳文件。他們的文檔要求這樣。在那裏有一個工作的解決方案,在「原始」淨/ http。我有它的工作,但我想使用httparty。 https://www.backblaze.com/b2/docs/b2_upload_file.html – Adax

回答

0

試試這個

HTTParty.post(END_POINT_URL, 
:body => data.to_json, 
:headers => { 'Content-Type' => 'application/json', 
'Content-Length' => content_length, 'Other-Header' => other_header, })  
+0

Thx爲答案。但我需要設置內容類型'text/plain'併發送正文,而不是JSON。我上傳的文件是backblaze:(backblaze.com/b2/docs/b2_upload_file.html)。 Transfer-Encoding被設置爲分塊,我需要避免它。 – Adax

相關問題