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

clamav-rest Spring 3.2 RestTemplate导致400个错误请求

曾成天
2023-03-14
curl -k -F name="test file" -F file=@"myfile.pdf" https://clamav.my.org/scan
POST /scan HTTP/1.1
Host: clamav.my.org
User-Agent: curl/7.56.1
Accept: */*
Content-Length: 22834
Content-Type: multipart/form-data; boundary=------------------------5814453ea3a5f3e0
Expect: 100-continue
HTTP/1.1 100 Continue
HTTP/1.1 200 OK
Date: Thu, 18 Jan 2018 23:19:10 GMT
Content-Type: text/plain;charset=utf-8
Content-Length: 21
Everything ok : true
MultiValueMap<String, Object> parts = new LinkedMultiValueMap<String, Object>();
parts.add("name", "fileUpload.obj");
parts.add("file", in);

RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);

HttpEntity<MultiValueMap<String, Object>> requestEntity = 
    new HttpEntity<MultiValueMap<String, Object>>(parts, headers);

ResponseEntity<String> responseEntity = 
    restTemplate.exchange("https://clamav.my.org/scan", HttpMethod.POST, requestEntity, String.class);
String body = (String) responseEntity.getBody();
Created POST request for "https://clamav.my.org/scan"
Setting request Accept header to [text/plain, application/json, application/*+json, */*]
Writing [{name=[fileUpload.obj], file=[[B@fe97ef91]}] as "multipart/form-data" using [org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter@4885d075]
POST request for "https://clamav.my.org/scan" resulted in 400 (Bad Request); invoking error handler
Created POST request for "https://clamav.my.org/scan"
Setting request Accept header to [text/plain, application/json, application/*+json, */*]
Writing [{file=[[B@fe97ef91]}] using [org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter@e8e8b3fa]
POST request for "https://clamav.my.org/scan" resulted in 400 (Bad Request); invoking error handler

我已经尝试了几次迭代,并搜索了所有的示例代码。对于如何提出成功的请求有什么想法吗?TIA

共有1个答案

冯福
2023-03-14

我在一篇相关的文章中找到了答案,Singning-file-over-spring-rest-service-via-resttemplate

RestTemplate调用现在是,

        RestTemplate restTemplate = new RestTemplate();
        FormHttpMessageConverter converter = new FormHttpMessageConverter();
        restTemplate.getMessageConverters().add(converter);
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.MULTIPART_FORM_DATA);

        MultipartByteArrayResource resource = new MultipartByteArrayResource(in);
        resource.setFilename("fileUpload.obj");

        MultiValueMap<String, Object> parts = new LinkedMultiValueMap<String, Object>();
        parts.add("name", "fileUpload.obj");
        parts.add("file", resource);

        HttpEntity<MultiValueMap<String, Object>> requestEntity = new HttpEntity<MultiValueMap<String, Object>>(parts,
                headers);

        ResponseEntity<String> responseEntity = restTemplate.exchange("https://clamav.my.org/scan",
                HttpMethod.POST, requestEntity, String.class);
        String body = (String) responseEntity.getBody();

我相信这是可以改进的,但它现在起作用了。

 类似资料:
  • 我有一个jersey服务器的例子,它适用于XML,但不适用于JSON。 如果我将此xml请求作为发送到服务器,则一切正常, 作为) 我在utilities-online.info将其翻译为JSON,并将其作为发送到相同的URL,具有相同的参数,但收到错误“400错误请求” 环境: Tomcat 7 球衣2.17 我尝试过的: 将添加到init-参数 启用init-参数为 添加了依赖项//

  • 我正在Docker容器中运行我的Django应用程序,其中nginx作为Web服务器,uWSGI作为应用程序服务器。一切都部署在AWS Elastic Beanstalk上。当我设置DEBUG=False时,所有的请求都会导致错误的请求(400)。我尝试了两个和,但仍然出现相同的错误。我通过检查日志来验证请求是否到达uWSGI。uWSGI日志包含以下内容: 我试过很多答案,但都不走运。我试过这个答

  • 问题内容: 。我 试图通过Spring Android 从API 获取访问令牌。来自Instagram文档的请求是这样的: 这是我的请求访问令牌(成功获取请求令牌后): 结果映射类: 其余模板: 但是我总是收到400错误的请求错误。这是我的堆栈跟踪: P / s:我确定我的参数值正确,因为我通过curl进行了测试,并且效果很好。 问题答案: 如果请求的内容类型不可接受,则服务器通常会返回HTTP

  • 我有一个现有的spring boot应用程序。我刚刚在、中添加了acturetor。 执行器工作有响应代码错误 来自日志:看起来spring无法解析某个参数。下面是日志。 019-05-15 14:38:24.747 DEBUG 8964---[nio-8090-exec-3]o.s.web.servlet.dispatcherServlet:GET“/acturet/health”,parame

  • 我有一个基于Spring Web model view controller(MVC)框架的项目。Spring Web模型-视图-控制器(MVC)框架的版本是3.2.8 我有这个控制器 这个URL一切正常:

  • 目前从Angular JS controller中,我试图将JSON数据发送到后端服务。但是我有400个错误的请求错误。 在Controller中,我试图通过http服务发送数据,如下所示: