0

该服务接收来自移动客户端的多部分请求,并将请求传递给下游服务以上传图像。我在下游服务中看到 415 Unsupported Media Type

 private void makeRequest(HttpRequest<Buffer> httpRequest,
                             Promise<Object> future,
                             RequestContext requestContext,
                             RoutingContext routingContext,
                             Entry entry) {
        MultipartForm multipartForm = MultipartForm.create();
        MultiMap attributes = routingContext.request()
                .formAttributes();
        attributes.forEach(attribute -> {
            multipartForm.attribute(attribute.getKey(), attribute.getValue());
        });
        routingContext.fileUploads()
                .forEach(fileUpload -> {
                    multipartForm.binaryFileUpload(fileUpload.name(), fileUpload.fileName(),
                            fileUpload.uploadedFileName(), fileUpload.contentType());
                });

        httpRequest.sendMultipartForm(multipartForm, response -> {
            handleResponse(routingContext, future, response, requestContext, entry);
        });
    }

获取以下异常

javax.ws.rs.NotSupportedException: HTTP 415 Unsupported Media Type
    at org.glassfish.jersey.server.internal.routing.MethodSelectingRouter.getMethodRouter(MethodSelectingRouter.java:478)
    at org.glassfish.jersey.server.internal.routing.MethodSelectingRouter.access$000(MethodSelectingRouter.java:94)
    at org.glassfish.jersey.server.internal.routing.MethodSelectingRouter$4.apply(MethodSelectingRouter.java:779)
    at org.glassfish.jersey.server.internal.routing.MethodSelectingRouter.apply(MethodSelectingRouter.java:371)

我的下游服务的 API 签名

@POST
    @Timed
    @Path("{userId}/{scope}/upload")
    @Consumes(MediaType.MULTIPART_FORM_DATA)
    @Produces(MediaType.APPLICATION_JSON)
    @ApiOperation("Multipart upload of an image")

有人可以指导我的代码片段中有什么问题,或者是否需要在 vertx 服务器或 vertx Web 客户端中启用任何设置?

谢谢,尼蒂什·戈亚尔

4

1 回答 1

0

我能够通过显式设置标题来解决这个问题 .putHeader("content-type", "multipart/form-data")

于 2020-07-27T10:03:38.253 回答