2016-05-09 48 views
1

ファラデーを使用してファイルを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をラップされなかった

+0

可能な複製(http://stackoverflow.com/questions/16725195/upload-files-usingから見たヘッダーですファラデー) – anquegi

答えて

0

POSTリクエストのヘッダを設定することができませんハッシュで

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

これは、適切なヘッダーを設定しないファラデーの問題を解決しました。ファラデー::接続ポストの最後の引数は、[ファラデーを使用してファイルのアップロード]のdocs

header = {'Authorization': 'Basic =A123CD'} 
conn.post url, payload, header 
関連する問題