2016-05-09 4 views
1

У меня возникли проблемы с загрузкой файла в веб-службу с использованием Faraday.Как загрузить файл в формате pdf с помощью faraday с заголовком

conn = Faraday.new('http://myapi') do |f| 
    f.request :multipart 
    f.adapter Faraday.default_adapter 
end 

payload = Faraday::UploadIO.new(file_io, 'application/pdf') 

conn.post '/upload', payload 

Java-апи принимает POST к 'Content-Type' => 'multipart/form-data'. Запрос должен отправить файл с требуемыми границами. Это не. Когда запрос перехвачен, он показывает, что заголовок установлен в x-url encoded. Если заголовок установлен в Content-Type, граница не добавляется faraday.

API-интерфейс бросает,

2016-05-09 11: 36: 03068 [1] [e02b7381] [причал-139] ИНФО com.fm.rest.services.interceptor.RequestLoggingInInterceptor - Запрос информации: POST http://localhost:8080/api/projects/1/files/f719137f-702a-4801-9654-95f5a58d78f2 ISO-8859-1 Заголовки многочастному/form-данных: {Accept = [/], Accept-Encoding = [GZIP; д = 1,0, выкачать; д = 0,6, идентичность; д = 0.3], connection = [close], Content-Length = [217115], content-type = [multipart/form-data], Host = [localhost: 8080], User-Agent = [Ruby], X-Newrelic-Id = [12YHU123wsC123wE =], X-Newrelic-Transaction = [P9TDFcABCAEEVQ8JFTs =]} 2016-05-09 11: 36: 03,072 [1] [e02b7381] [ причал-139] WARN org.apache.cxf.phase.PhaseInterceptorChain - перехватчик для {http://services.rest.fm.api.com/} DirectoryRestService бросил исключение, раскручивая в настоящее время org.apache.cxf.interceptor.Fault: не удалось определить границу из сообщения ! в org.apache.cxf.interceptor.AttachmentInInterceptor.handleMessage (AttachmentInInterceptor.java:66)

Я не могу установить заголовок в запросе на пост

+0

Возможный дубликат [Загрузить файлы с помощью Фарадей] (http://stackoverflow.com/questions/16725195/upload-files-using -faraday) – anquegi

ответ

0

Проблема не заворачивая Фарадея пользователя UPLOADER И.О. в хеш-файле

payload = { :file => Faraday::UploadIO.new(file, 'application/pdf') } 

Это решило проблему faraday, не устанавливая правильный заголовок. Последний аргумент пост Фарадей :: Connection является заголовком, как видно из docs

header = {'Authorization': 'Basic =A123CD'} 
conn.post url, payload, header 

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

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