2016-04-27 5 views
0

Я устанавливаю заголовки вроде этого: где файл является Test.txtКак установить заголовки Content-Length и Content-Type при отправке файла с HTTP-POST POST?

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 устанавливается в chunked.

Как можно задать 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). Передача-Кодировка устанавливается в chunked, и мне нужно ее избегать. – Adax

 Смежные вопросы

  • Нет связанных вопросов^_^