当前位置: 首页 > 知识库问答 >
问题:

Vertx Web Client为Multipart/form-data抛出HTTP 415不支持的媒体类型

徐洛华
2023-03-14

此服务从移动客户端接收多部分请求,并将请求传递给下游服务以上载图像。我在下游服务中看到415种不受支持的媒体类型

 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 server或vertx web client中启用的设置?

谢谢尼蒂斯·戈亚尔

共有1个答案

邵和硕
2023-03-14

我可以通过显式设置标题来解决这个问题。putHeader(“内容类型”,“多部分/表单数据”)

 类似资料:
  • 我已经在SO上找到了一些这样的问题,但它们似乎都没有解决我的特定问题,而且我无法自己找到解决方案。 下面是我得到的错误: 我通过一个 jQuery AJAX 请求发送此请求,如下所示: 这是我的Javaendpoint: 我看到一些人很幸运地将endpoint方法的参数更改为使用@FormDataParam而不是FormDataMultiPart(如这里所示),但我无法编辑Java类,因此我必须按

  • 我是自动化的一个API的POST调用使用Rest保证和内容类型和ACCEPT头我必须使用"应用程序/vnd.apijson"。但是每次我使用“应用程序/vnd.apijson”,我都会得到415个状态代码。尽管使用邮递员的相同POST呼叫工作得非常好。 以下是我的示例代码: 以下是收到的答复 我曾尝试将Content-Type更改为应用程序/json,正如其他帖子/评论所建议的那样,但这似乎对我的

  • 问题内容: 我是Django和Django REST Framework的新手。我有以下序列化程序类,用于与其他信息一起上传文件。但是,当我使用上传的文件运行API端点时,结果是这样的: 我通过谷歌搜索努力解决了这个问题,但无法解决,因此这里是我的序列化程序和API视图。 序列化器: 视图: 问题答案: 如果要发送multipart / form-data,则应使用MultiPartParser而

  • 我正在使用泽西岛客户endpoint击SpringMVC REST控制器的图像上传功能。我收到以下异常: 我的控制器发布图像的方法: 我的REST控制器方法获取post数据: 有没有解决这个异常的方法?我已经按照以下堆栈解决方案进行了尝试,但仍然收到相同的异常。 Jersey客户端异常:找不到消息正文编写器 使用泽西岛发送多个文件:找不到多部分/表单数据的消息正文

  • 我创建了一个控制器: 我不明白为什么我会收到错误415不支持。救命啊!