こんにちは。
DjangoのWebアプリケーションを作っています。
Djangoのサーバ側処理で、外部サイト(SpringBootで構築)にファイルアップロードをする仕組みを作っています。
Java側のWEBアプリ内での実行は正常に動き、PostManからURLを叩いて実行しても正しく動いてます。
ソースはこんな感じです。
SpringBoot
1@RestController 2@RequiredArgsConstructor 3@RequestMapping(value = "aaa") 4public class AaaaController { 5 6 /** 7 * 登録 8 */ 9 @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) 10 @ResponseStatus(HttpStatus.OK) 11 public XxxxResource signup(HttpServletRequest request, @Validated XxxxParams xxxxParams, BindingResult result) throws AppException, IOException{
Django側の呼び出しはこのような感じです。
Django
1 2//呼出し部 3 def post(self, param): 4 header = { 5 HttpHeaderParam.CONTENT_TYPE: 'multipart/form-data' 6 } 7 result = WebApiFunc().post_call( 8 "http://yobidashi.com/aaaa/upload", 9 headers=headers, 10 param=param 11 ) 12 13 return result 14 15... 16//通信部 17class WebApiFunc(object): 18 19 # HTTP KYEコンテンツタイプ 20 HTTP_HEADER_KEY_CONTENT_TYPE = "Content-Type" 21 # デフォルトURL 22 DEFAULT_URL = "http://localhost:8000" 23 # デフォルトHTTPメソッド 24 DEFAULT_HTTP_METHOD_POST = "post" 25 # デフォルトコンテンツタイプ 26 DEFAULT_CONTENT_TYPE_JSON = "application/json" 27 # デフォルト文字コード 28 DEFAULT_CHARACTOR_CODE = "utf-8" 29 30 def __init__(self, url=None, charactorCode=DEFAULT_CHARACTOR_CODE): 31 self.url = url 32 self.charactorCode = charactorCode 33 34 def post_call(self, url, headers, param=None): 35 return self.call( 36 url, 37 self.DEFAULT_HTTP_METHOD_POST, 38 headers, 39 param 40 )
ただ、Django側からCallした場合、このようなエラーが出力されます。
Log
1org.springframework.web.multipart.MultipartException: 2 Failed to parse multipart servlet request; nested exception is java.io.IOException: org.apache.tomcat.util.http.fileupload.FileUploadException: the request was rejected because no multipart boundary was found 3
Django側でのHTTPHeaderのContentTypeの付け方に問題があるのかなと想像しているのですが、ググるとこの'multipart/form-data'をセットする事自体やめた方が良い様な事を見たりしました。
https://idesaku.hatenablog.com/entry/20081029/1225254524
Java(SpringBoot)のアプリの方は正常に動いており、なるべく修正を発生させたくないのですが、この原因についてお分かりになる方はいらっしゃいますでしょうか?
お聞かせ頂ければ幸いです。宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/29 10:34
2020/02/29 10:42
2020/03/02 07:50