牧歌ing 2025-07-08 14:35 采纳率: 42.9%
浏览 13

RestTemplate 发送表单数据问题

RestTemplate 发送表单数据问题


 String url = "http://10.10.10.10:1000/loadtask.do";
            RestTemplate restTemplate = new RestTemplate();
            HttpHeaders headers = new HttpHeaders();
            MultiValueMap<String, Object> map = new LinkedMultiValueMap();
            String reqdata = "{RHED: {PRO: “”,TD: “”},RBODY: {data: {id: 123}}}";
            map.add("REQ_MESSAGE", reqdata);
            headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
            //构造实体对象
            HttpEntity<MultiValueMap<String, Object>> param = new HttpEntity<>(map, headers);
            //发起请求,服务地址,请求参数,返回消息体的数据类型
            ResponseEntity<String> response = restTemplate.postForEntity(url, param, String.class);
            String body = (String)response.getBody();
            logger.info("接口返回数据:" + body);

错误信息

org.springframework.http.InvalidMediaTypeException: Invalid mime type "text/plain, application/json, application/*+json, */*;charset=UTF-8": Invalid token character ',' in token "plain, application/json, application/*+json, */*"
    at org.springframework.http.MediaType.parseMediaType(MediaType.java:620)
    at org.springframework.http.HttpHeaders.getContentType(HttpHeaders.java:967)
    at org.springframework.web.client.HttpMessageConverterExtractor.getContentType(HttpMessageConverterExtractor.java:136)
    at org.springframework.web.client.HttpMessageConverterExtractor.extractData(HttpMessageConverterExtractor.java:93)
    at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:1037)
    at org.springframework.web.client.RestTemplate$ResponseEntityResponseExtractor.extractData(RestTemplate.java:1020)
    at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:778)
    at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:711)
    at org.springframework.web.client.RestTemplate.postForEntity(RestTemplate.java:468)

  • 写回答

7条回答 默认 最新

  • 阿里嘎多学长 2025-07-08 14:35
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    RestTemplate 发送表单数据问题

    RestTemplate 是 Spring 的一个 HTTP 客户端,可以用来发送 HTTP 请求。发送表单数据可以使用 RestTemplatepostForEntity 方法,传入 MultiValueMap 对象作为请求体。

    下面是一个示例代码:

    String url = "http://10.10.10.10:1000/loadtask.do";
    RestTemplate restTemplate = new RestTemplate();
    
    MultiValueMap<String, String> formData = new LinkedMultiValueMap<>();
    formData.add("key1", "value1");
    formData.add("key2", "value2");
    
    ResponseEntity<String> response = restTemplate.postForEntity(url, formData, String.class);
    

    在上面的代码中,我们创建了一个 MultiValueMap 对象,添加了两个键值对,然后将其传递给 postForEntity 方法作为请求体。postForEntity 方法将发送 POST 请求到指定的 URL,并将请求体作为表单数据发送。

    如果你需要发送文件作为表单数据,可以使用 RestTemplatepostForEntity 方法,传入 HttpEntity 对象作为请求体。例如:

    String url = "http://10.10.10.10:1000/loadtask.do";
    RestTemplate restTemplate = new RestTemplate();
    
    File file = new File("path/to/file");
    HttpEntity<File> fileEntity = new HttpEntity<>(file, MediaType.APPLICATION_OCTET_STREAM);
    
    ResponseEntity<String> response = restTemplate.postForEntity(url, fileEntity, String.class);
    

    在上面的代码中,我们创建了一个 HttpEntity 对象,传入文件对象和 MediaType.APPLICATION_OCTET_STREAM 作为请求体,然后将其传递给 postForEntity 方法作为请求体。postForEntity 方法将发送 POST 请求到指定的 URL,并将请求体作为文件发送。

    评论

报告相同问题?

问题事件

  • 创建了问题 7月8日