首页 > 编程语言 >java RestTemplate 发送post请求

java RestTemplate 发送post请求

时间:2023-11-17 14:02:30浏览次数:32  
标签:java String restTemplate RestTemplate param headers new post

RestTemplate简介

RestTemplate是执行HTTP请求的同步阻塞式的客户端,它在HTTP客户端库(如JDK HttpURLConnection,Apache HttpComponents,okHttp等)基础封装了更加简单易用的模板方法API。即RestTemplate是一个封装,底层的实现还是java应用开发中常用的一些HTTP客户端。相对于直接使用底层的HTTP客户端库,它的操作更加方便、快捷,能很大程度上提升我们的开发效率。

case1: POST, 格式:application/json

/**
 * 采用POST请求,数据格式为 application/json,并且返回结果是JSON string
 * @param url
 * @param
 * @return
 */
public  static String postForJson(String url, JSONObject json){
    RestTemplate restTemplate = new RestTemplate();
    //设置Http Header
    HttpHeaders headers = new HttpHeaders();
    //设置请求媒体数据类型
    headers.setContentType(MediaType.APPLICATION_JSON);
    //设置返回媒体数据类型
    headers.add("Accept", MediaType.APPLICATION_JSON.toString());
    HttpEntity<String> formEntity = new HttpEntity<String>(json.toString(), headers);
    return restTemplate.postForObject(url, formEntity, String.class);
}

 

case2:POST, 格式:application/x-www-form-urlencoded

/**
 * 采用POST请求,数据格式为 application/x-www-form-urlencoded,并且返回结果是JSON string
 * @param url 请求地址
 * @param
 * @return
 */
public static String postInvocation(String url, MultiValueMap<String, Object> param) {
    RestTemplate restTemplate = new RestTemplate();
    //设置Http Header
    HttpHeaders headers = new HttpHeaders();
    //设置请求媒体数据类型
    headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
    //设置返回媒体数据类型
    HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(param, headers);
    return restTemplate.postForObject(url, httpEntity,String.class);
}

 

问题 No beans of 'RestTemplate' type found

使用RestTemplate, 如果直接使用注解

@Autowired
private RestTemplate restTemplate2;

报错:Could not autowire. No beans of 'RestTemplate' type found. 

原因:SpringBoot在版本≥1.4后不再自动定义RestTemplate,而是需要自己手动定义。

解① 自定义Bean

@Configuration
public class RestTemplateConfig {

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

 解② 手工自定义

RestTemplate restTemplate = new RestTemplate();
or
private RestTemplate restTemplate = new RestTemplateBuilder()
        .setConnectTimeout(Duration.ofSeconds(2))
        .setReadTimeout(Duration.ofSeconds(5))
        .build();

参考

https://www.4spaces.org/1069.html



标签:java,String,restTemplate,RestTemplate,param,headers,new,post
From: https://blog.51cto.com/u_15758999/8442267

相关文章

  • java中的异步任务处理和Feature接口
    简介Java并发包提供了一套框架,大大简化了执行异步任务所需要的开发。框架引入了“执行服务”的概念,封装了任务执行的细节,对任务提交者而言,他可以关注任务本身,如提交任务、获取结果、取消任务。而不用关注任务执行的细节。基本接口①Runnable和Callable:表示要执行的任务②Excecuto......
  • javascript postMessage给子页面发消息
    发送消息页面<!DOCTYPEhtml><html><head><title>demo</title><metacharset="utf-8"/><script>varchildwinconstchildname="popup"functionopenChild(){......
  • java如何做大体积的文件上传和下载
    在Java中,实现大体积文件的上传和下载涉及到处理文件的分片、并发上传、断点续传等问题。本文将详细介绍如何通过Java实现大体积文件的上传和下载。1.文件上传文件上传是将本地文件上传到服务器的过程。对于大体积文件的上传,我们可以将文件分成多个小片段进行并发上传。1.1文件分......
  • 【Java基础】Java中switch的多种写法
    Java中switch的多种写法代码需求:键盘录入一个数字(代表星期几),判断是工作日还是休息日switch最基础写法 publicstaticvoidswitchTest(){while(true){System.out.println("请输入:");Scannersc=newScanner(System.in);......
  • Java IO --- select,poll,epoll
    一、select、poll、epollselect、poll、epoll都是IO多路复用的机制且本质上都是同步I/O。IO多路复用就是通过一种机制,可以同时监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知进行相应的读写操作。1.1selectintselect(intn,fd_set*readfds,fd_set*writefd......
  • 通过Java实现文件断点续传功能
    用户上传大文件,网络差点的需要历时数小时,万一线路中断,不具备断点续传的服务器就只能从头重传,而断点续传就是,允许用户从上传断线的地方继续传送,这样大大减少了用户的烦恼。本文将用Java语言实现断点续传,需要的可以参考一下什么是断点续传用户上传大文件,网络差点的需要历时数小时,万......
  • Java -day2
    三流程控制3.1scannerpsvm newScanner(System.in) alt+enter+enter  自动补全 Scannerscanner=newScanner(System.in);   3.2if3.3switch3.4while3.5for ......
  • 「Java开发指南」如何在Spring中使用JAX-WS注释器?
    本文将指导您如何使用JAX-WS注释器从Spring服务生成JAX-WSWeb服务,在本教程中,您将学习如何:为Spring服务启用JAX-WS部署应用程序并测试服务所有与Springscaffolding相关的任务都需要MyEclipseSpring或Bling授权。MyEclipsev2023.1.2离线版下载MyEclipse技术交流群:7423369......
  • Java 业务开发常见错误 100 例(二)
    HTTP调用:超时、重试、并发需要考虑的三点:首先,框架设置的默认超时是否合理;其次,考虑到网络的不稳定,超时后的请求重试是一个不错的选择,但需要考虑服务端接口的幂等性设计是否允许我们重试;最后,需要考虑框架是否会像浏览器那样限制并发连接数,以免在服务并发很大的情况下,HTTP调用......
  • Java设计模式之组合模式
    在某些情况下,我们需要处理一组对象,这些对象之间具有整体-部分的关系,我们希望能够以一致的方式处理单个对象和对象组合,而不需要对它们进行特殊处理。组合模式的解决方案是将对象组合成树状结构,其中树的节点可以是单个对象或对象组合。这样无论是操作单个对象还是对象组合,都可以使用......