Я использую Apache HttpComponents v4.3.3 (maven httpclient и httpmime). Мне нужно загрузить файл с некоторыми метаданными. Команда curl, которая работает, выглядит следующим образом.
curl -k -i -H "Content-Type: multipart / mixed" -X POST --form 'field1 = val1' --form 'field2 = val2' --form '[email protected]; type = application / zip 'https://www.some.domain/
Я попытался имитировать этот пост с завитками следующим образом.
HttpEntity entity = MultiPartEntityBuilder
.create()
.addPart("field1",new StringBody("val1",ContentType.TEXT_PLAIN))
.addPart("field2",new StringBody("val2",ContentType.TEXT_PLAIN))
.addPart("file", new FileBody(new File("somefile.zip"), ContentType.create("application/zip"))
.build();
HttpPost post = new HttpPost("https://www.some.domain");
post.addHeader("Content-Type", "multipart/mixed");
Однако после того, как я использую HttpClient для выполнения HttpPost, я получаю следующее исключение (код сервера также является Java, работающим на Jetty).
org.apache.commons.fileupload.FileUploadException: запрос был отклонен, потому что не было найдено многочастной границы
Когда я добавляю след на завиток
curl --trace - -k -i -H "Content-Type: multipart / mixed" -X POST --form 'field1 = val1' --form 'field2 = val2' --form '[email protected]; type = application / zip 'https://www.some.domain/
Я вижу, что пары поле / значение формы заданы как заголовки HTTP.
Content-Disposition: форма-данные; имя = поле1 ... значение1
Есть идеи, что я здесь делаю не так? Любая помощь приветствуется.