ファラデーを使用してファイルをWebサービスにアップロードする際に問題が発生しました。ファラデーを使用してPDFファイルをアップロードする方法
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 APIは、'Content-Type' => 'multipart/form-data'
にPOST
を受け入れます。要求は、必要な境界でファイルを送信することになっています。そうではない。 要求がインターセプトされると、ヘッダーはx-url encoded
に設定されています。ヘッダーがContent-Type
に設定されている場合、境界はファラデー加算されません。
APIスロー、
2016年5月9日11:36:03068 [1]〜[e02b7381] [桟橋-139] INFO com.fm.rest.services.interceptor.RequestLoggingInInterceptor - 要求情報: POST http://localhost:8080/api/projects/1/files/f719137f-702a-4801-9654-95f5a58d78f2 ISO-8859-1マルチパート/フォームデータヘッダ: {受け入れ= [/]、 受け入れるエンコード= [GZIP; Q = 1.0、収縮; Q = 0.6、アイデンティティ; Q = 0.335、 接続= [閉じる]、Content-Length = [217115]、 コンテンツタイプ= [マルチパート/フォームデータ]、ホスト= [localhost:8080]、X-Newrelic-Transaction = [P9TDFcABCAEEVQ8JFTs =]} 2016-05-09 11:36:03,072 [1] [e02b7381] [桟橋-139] org.apache.cxf.phase.PhaseInterceptorChainをWARN - ためのインターセプタ{http://services.rest.fm.api.com/} DirectoryRestServiceは今org.apache.cxf.interceptor.Faultを巻き戻し、 例外をスローした: メッセージから境界を決定できませんでした。 ! org.apache.cxf.interceptor.AttachmentInInterceptor.handleMessage(AttachmentInInterceptor.java:66)
で私はこの問題は、ファラデーアップローダIOをラップされなかった
可能な複製(http://stackoverflow.com/questions/16725195/upload-files-usingから見たヘッダーですファラデー) – anquegi