Фон
У меня есть две услуги. Сервис A подвергается воздействию внешнего мира, а Сервис B вызывается Сервисом A . Все эти сервисы являются сервисами dropwizard. Функция, которую я пытаюсь реализовать, заключается в загрузке файла из внешнего интерфейса, который загружается в Сервис A , который обрабатывает аутентификацию. Тот же самый запрос должен быть передан Сервис B . Служба B должна получить файл и сохранить его на диск после сжатия и создания эскиза.
Я протестировал обе службы по отдельности с помощью почтальона, и они могут получить файл как InputStream и расположение содержимого.
Задача
Проблема, с которой я сталкиваюсь, заключается в том, что я хочу передать файл в форме данных из Служба A в Служба B .
Вот код в Сервисе A , который отправляет данные формы в Сервис B .
@POST
@Timed
@Consumes(MediaType.MULTIPART_FORM_DATA)
fun create(
@Auth user: AuthUser,
@FormDataParam("file") file: InputStream,
@FormDataParam("file") fileDetail: FormDataContentDisposition,
@FormDataParam("file") body: FormDataBodyPart,
@PathParam("res_id") articleId: String): Response {
val multiPart = FormDataMultiPart()
multiPart.bodyPart(body)
val target = this.client.target("http://localhost:8082/file/create?res_id=1")
val response = target.request().post(Entity.entity(multiPart, multiPart.mediaType), Response::class.java)
Response.status(response.status).entity(response.entity).build()
}
Вот код в Службе B , который его получает.
@POST
@Path("/create")
@Consumes(MediaType.MULTIPART_FORM_DATA)
fun create(
@FormDataParam("file") file: InputStream,
@FormDataParam("file") fileDetail: FormDataContentDisposition,
@QueryParam("res_id") resId: String): Response {
resourceLogger.info("Res id in media create $resId")
upload_file(file, fileDetail)
return Response.status(201).entity(mapOf("success" to true)).build()
}
Запрос достигает Служба A и отправляется на Служба B . Но Служба B отвечает 400. Нет журналов или трассировки стека. Не могу понять, что происходит не так. Любая помощь будет оценена.