iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >RestTemplate发送HTTP POST请求使用方法详解
  • 312
分享到

RestTemplate发送HTTP POST请求使用方法详解

2024-04-02 19:04:59 312人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、postForObject发送JSON格式请求二、postForObject模拟表单数据提交三、url支持占位符语法四、postForEntity()方法五、postForL

本文是精讲RestTemplate第4篇,前篇的blog访问地址如下:

RestTemplate在spring或非Spring环境下使用精讲

RestTemplate实现多种底层Http客户端类库的切换用法

RestTemplate发送HTTP GET请求使用方法详解

在上一节为大家介绍了RestTemplate的GET请求的两个方法:getForObject()和getForEntity()。其实POST请求方法和GET请求方法上大同小异,RestTemplate的POST请求也包含两个主要方法:

postForObject()

postForEntity()

二者的主要区别在于,postForObject()返回值是HTTP协议的响应体。postForEntity()返回的是ResponseEntity,ResponseEntity是对HTTP响应的封装,除了包含响应体,还包含HTTP状态码、contentType、contentLength、Header等信息。

一、postForObject发送jsON格式请求

写一个单元测试用例,测试用例的内容是向指定的URL提交一个Post(帖子).

@SpringBootTest
class PostTests {
   @Resource
   private RestTemplate restTemplate;
   @Test
   void testSimple()  {
      // 请求地址
      String url = "http://jsonplaceholder.typicode.com/posts";
      // 要发送的数据对象
      PostDTO postDTO = new PostDTO();
      postDTO.setUserId(110);
      postDTO.setTitle("zimug 发布文章");
      postDTO.setBody("zimug 发布文章 测试内容");
      // 发送post请求,并输出结果
      PostDTO result = restTemplate.postForObject(url, postDTO, PostDTO.class);
      System.out.println(result);
   }
}

jsonplaceholder.typicode.com是一个可以提供在线免费RESTful测试服务的一个网站”

/posts"服务接收PostDTO 参数对象,并将请求结果以JSON字符串的形式进行响应。响应结果就是请求参数对象对应的JSON字符串。

所以postForObject方法第二个参数是请求数据对象,第三个参数是返回值类型

最终将返回值的打印结果如下:

二、postForObject模拟表单数据提交

下面给大家写一个使用postForObject模拟表单数据提交的例子,即:提交x-www-fORM-urlencoded格式的数据

@Test
public void testForm() {
   // 请求地址
   String url = "http://jsonplaceholder.typicode.com/posts";
   // 请求头设置,x-www-form-urlencoded格式的数据
   HttpHeaders headers = new HttpHeaders();
   headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
   //提交参数设置
   MultiValueMap<String, String> map = new LinkedMultiValueMap<>();
   map.add("title", "zimug 发布文章第二篇");
   map.add("body", "zimug 发布文章第二篇 测试内容");
   // 组装请求体
   HttpEntity<MultiValueMap<String, String>> request =
               new HttpEntity<MultiValueMap<String, String>>(map, headers);
   // 发送post请求,并打印结果,以String类型接收响应结果JSON字符串
   String result = restTemplate.postForObject(url, request, String.class);
   System.out.println(result);
}

请求数据打印结果如下:

三、 url支持占位符语法

如果url地址上面需要传递一些动态参数,可以使用占位符的方式:

String url = "http://jsonplaceholder.typicode.com/{1}/{2}";
String url = "http://jsonplaceholder.typicode.com/{type}/{id}";

具体的用法和使用GET方法请求是一致的

所以请参考: RestTemplate发送HTTP GET请求使用方法详解

四、postForEntity()方法

上面的所有的postForObject请求传参方法,postForEntity都可以使用,使用方法上也几乎是一致的,只是在返回结果接收的时候略有差别。

使用ResponseEntity<T> responseEntity来接收响应结果。用responseEntity.getBody()获取响应体。响应体内容同postForObject方法返回结果一致。剩下的这些响应信息就是postForEntity比postForObject多出来的内容。

httpstatus statusCode = responseEntity.getStatusCode();获取整体的响应状态信息

int statusCodeValue = responseEntity.getStatusCodeValue(); 获取响应码值

HttpHeaders headers = responseEntity.getHeaders();获取响应头等

@Test
public void testEntityPoJo() {
   // 请求地址
   String url = "http://jsonplaceholder.typicode.com/posts";
   // 要发送的数据对象
   PostDTO postDTO = new PostDTO();
   postDTO.setUserId(110);
   postDTO.setTitle("zimug 发布文章");
   postDTO.setBody("zimug 发布文章 测试内容");
   // 发送post请求,并输出结果
   ResponseEntity<String> responseEntity
               = restTemplate.postForEntity(url, postDTO, String.class);
   String body = responseEntity.getBody(); // 获取响应体
   System.out.println("HTTP 响应body:" + postDTO.toString());
   //以下是postForEntity比postForObject多出来的内容
   HttpStatus statusCode = responseEntity.getStatusCode(); // 获取响应码
   int statusCodeValue = responseEntity.getStatusCodeValue(); // 获取响应码值
   HttpHeaders headers = responseEntity.getHeaders(); // 获取响应头
   System.out.println("HTTP 响应状态:" + statusCode);
   System.out.println("HTTP 响应状态码:" + statusCodeValue);
   System.out.println("HTTP Headers信息:" + headers);
}

输出打印结果

五、postForLocation() 方法的使用

postForLocation的传参的类型、个数、用法基本都和postForObject()或postForEntity()一致。和前两者的唯一区别在于返回值是一个URI。该URI返回值体现的是:用于提交完成数据之后的页面跳转,或数据提交完成之后的下一步数据操作URI。

@Test
public void testURI() {
   // 请求地址
   String url = "http://jsonplaceholder.typicode.com/posts";
   PostDTO postDTO = new PostDTO();
   postDTO.setUserId(110);
   postDTO.setTitle("zimug 发布文章");
   postDTO.setBody("zimug 发布文章 测试内容");
   // 发送post请求,并输出结果
   URI uri = restTemplate.postForLocation(url,postDTO);
   System.out.println(uri);
}

输出结果如下,含义是:提交了post之后,该post的id是101,可以通过如下的连接去获取数据。

以上就是RestTemplate发送HTTP POST请求使用方法详解的详细内容,更多关于RestTemplate发送HTTP POST请求用法的资料请关注编程网其它相关文章!

--结束END--

本文标题: RestTemplate发送HTTP POST请求使用方法详解

本文链接: https://www.lsjlt.com/news/142790.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • RestTemplate发送HTTP POST请求使用方法详解
    目录一、postForObject发送JSON格式请求二、postForObject模拟表单数据提交三、url支持占位符语法四、postForEntity()方法五、postForL...
    99+
    2024-04-02
  • RestTemplate发送HTTP GET请求使用方法详解
    目录前言一、getForObject()方法1.1.以String的方式接受请求结果数据1.2.以POJO对象的方式接受结果数据1.3.以数组的方式接收请求结果1.4.使用占位符号传...
    99+
    2024-04-02
  • SpringBoot 如何使用RestTemplate发送Post请求
    目录背景:1、待访问的API2、返回对象3、将发送Post请求的部分封装如下4、UserInfo对象5、在Service层封装将要发送的参数6、在控制器中调用service中的方法,...
    99+
    2024-04-02
  • Java Http请求方式之RestTemplate常用方法详解
    目录引言常见用法简单Get\Post请求Post提交常规表单Post上传文件配置项请求添加Cookie\Header配置请求工厂 超时、代理配置拦截器、转换器,错误处理错误重试(额外...
    99+
    2024-04-02
  • C#通过GET/POST方式发送Http请求
    目录两者的区别:参数传输数据的大小 安全性 Get请求 Post请求 介绍http请求的两种方式,get和post方式。并用C#语言实现,如何请求url并获取返回的数据 两者的区别:...
    99+
    2024-04-02
  • java使用RestTemplate封装post请求方式
    目录使用RestTemplate封装post请求RestTemplate使用封装1、SpringBoot使用RestTemplate(使用apache的httpclient)2、使用...
    99+
    2024-04-02
  • Python使用POST方法发送HTTP请求的15个示例(基于requests)
    以下是使用requests库调用HTTP接口进行POST请求的15个示例: 发送简单的POST请求: import requestspayload = { 'key1': 'value1', '...
    99+
    2023-09-01
    python http
  • vue如何实现发送websocket请求和http post请求
    这篇文章主要介绍vue如何实现发送websocket请求和http post请求,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!先给大家介绍下vue发送websocket请求和http...
    99+
    2024-04-02
  • Java 使用 HttpClient 发送 GET请求和 POST请求
    目录概述认证方式基础认证Auth用户名密码认证Bearer Token 认证配置超时生成 RequestConfig设置超时时间概述 日常工作中,我们经常会有发送 HTTP 网络请求...
    99+
    2024-04-02
  • RestTemplate调用POST和GET请求示例详解
    目录正文一、POST请求调用二、GET请求调用三、Exchange调用正文 在日常开发过程中,http接口不仅提供给前端调用,有的时候还需要提供给其他业务方调用,在后台调用http...
    99+
    2023-05-13
    RestTemplate调用POST GET RestTemplate调用
  • PHP使用HTTP请求发送邮件的方法
    PHP是一种广泛使用的编程语言,其中一个常见的应用就是发送电子邮件。在这篇文章中,我们将讨论如何使用HTTP请求发送邮件。我们将从以下几个方面来介绍这个主题:什么是HTTP请求发送邮件的基本原理使用PHP发送HTTP请求发送邮件的示例代码什...
    99+
    2023-05-21
    Http请求 PHP 邮件发送
  • 怎么使用Postman发送POST请求
    本篇内容介绍了“怎么使用Postman发送POST请求”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、创建一个PHP文件,用于接收POST...
    99+
    2023-07-06
  • Java中Https发送POST请求的方法
    这篇文章主要介绍Java中Https发送POST请求的方法,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程序;2. 面向对象;3. 分...
    99+
    2023-06-15
  • 使用hutool工具发送post请求
     import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.json.JSONObject; import cn.huto...
    99+
    2023-09-08
    json java 前端
  • 使用HttpURLConnection发送POST请求并携带请求参数
    1、先创建URL对象,指定请求的URL地址。 URL url = new URL("http://example.com/api"); 2、调用URL对象的openConnection()方法创建HttpURLConnection对象。 ...
    99+
    2023-08-31
    java spring intellij-idea spring boot
  • HTTP POST请求发送form-data格式的数据
    1、业务需求 发送请求给第三方服务的接口,且请求报文格式为multipart/form-data的数据。支持复杂类型的参数,包含文件类型 2、 依赖包 org.projectlomboklombokcom.alibabafastjson1....
    99+
    2023-08-19
    java servlet 开发语言
  • Python HTTP请求详解:发送、接收和解析网络请求
    在今天的网络世界中,HTTP 请求已成为必不可少的技术,它允许我们与服务器进行通信,获取数据并执行各种操作。Python 作为一门强大的编程语言,提供了丰富的库和工具,使得 HTTP 请求变得更加容易实现。了解并掌握 HTTP 请求的原理...
    99+
    2024-02-23
    Python HTTP 请求 发送请求 接收响应 解析响应
  • PHP使用curl库发送HTTP请求
    在Web开发中,发送HTTP请求是一项非常重要的任务。无论是通过API获取数据,还是与第三方服务进行通信,都需要使用HTTP请求来进行数据传输。在PHP中,可以使用curl库来发送HTTP请求,本文就来详细介绍curl库的使用方法。一、cu...
    99+
    2023-05-22
    Http请求 PHP Curl库
  • Vue中怎么使用axios发送post请求
    Vue中怎么使用axios发送post请求,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。vue-resource不再维护之后,我也用起了a...
    99+
    2024-04-02
  • Go语言Http调用之Post请求详解
    目录前言POST 请求小结前言 上篇文章 Go HTTP 调用(上) 介绍了如何进行 HTTP 调用,并通过 GET 请求的例子,讲述了 query 参数和 header 参数如何设...
    99+
    2022-12-15
    Go语言 Post请求 Go Post请求 Go Post
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作