如上图,要求:

  1. post请求;
  2. x-www-form-urlencoded 类型;

如下代码没有进行整理,但是测试OK

package com.chinamobile.epic.http;

import com.chinamobile.epic.model.GraphiteResultModel;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.http.*;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate; import java.io.IOException;
import java.util.List; public class RestTempleteTest {
public static void main(String[] args) throws IOException {
RestTemplate restTemplate = new RestTemplate(); String endpoint = "http://10.254.3.92:5001/render";
String target = "YFQ.vm.{0003d969-3fde-432f-898a-09456e5527af,002badb2-79ae-43e3-9dea-9618edea6b54}.cpu.cpu.percent.util";
String format = "json";
String from = "-10min";
String until = "now"; System.out.println("=================================================");
// 设置请求体参数
MultiValueMap<String, String> bodyMap = new LinkedMultiValueMap<String, String>();
bodyMap.add("target", target);
bodyMap.add("format", format);
bodyMap.add("from", from);
bodyMap.add("until", until); // 设置请求头
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(bodyMap, headers); //进行HTTP请求
ResponseEntity<String> model = restTemplate.exchange(endpoint, HttpMethod.POST, request, String.class);
String response = model.getBody(); // 转换请求结果
ObjectMapper mapper = new ObjectMapper();
List<GraphiteResultModel> graphiteResultModels = mapper.readValue(response, new TypeReference<List<GraphiteResultModel>>() {
}); System.out.println("================");
System.out.println(graphiteResultModels.toString());
} }

转换结果的类

package com.chinamobile.epic.model;

import com.google.common.base.Splitter;
import org.springframework.util.CollectionUtils; import java.util.List; public class GraphiteResultModel {
private String target; //示例:summarize(clm.pm.10_144_202_142.agg.cpu.percent-avg.system,'10min','avg',true)
private List<List<Object>> datapoints; public String getTarget() {
return target;
} public void setTarget(String target) {
this.target = target;
} public List<List<Object>> getDatapoints() {
return datapoints;
} public void setDatapoints(List<List<Object>> datapoints) {
this.datapoints = datapoints;
} }

【HTTP】使用 RestTemplete 实现 post请求的更多相关文章

  1. 【Https】Spring RestTemplete支持Https安全请求

    实现步骤 Step1: 自定义ClientHttpRequestFactory package com.example.demo.https; import org.springframework.h ...

  2. Angular2入门系列教程7-HTTP(一)-使用Angular2自带的http进行网络请求

    上一篇:Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数 感觉这篇不是很好写,因为涉及到网络请求,如果采用真实的网络请求,这个例子大家拿到手估计还要自己写一个web ...

  3. Android请求网络共通类——Hi_博客 Android App 开发笔记

    今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...

  4. 重温Http协议--请求报文和响应报文

    http协议是位于应用层的协议,我们在日常浏览网页比如在导航网站请求百度首页的时候,会先通过http协议把请求做一个类似于编码的工作,发送给百度的服务器,然后在百度服务器响应请求时把相应的内容再通过h ...

  5. Taurus.MVC 2.2 开源发布:WebAPI 功能增强(请求跨域及Json转换)

    背景: 1:有用户反馈了关于跨域请求的问题. 2:有用户反馈了参数获取的问题. 3:JsonHelper的增强. 在综合上面的条件下,有了2.2版本的更新,也因此写了此文. 开源地址: https:/ ...

  6. nodejs之get/post请求的几种方式

    最近一段时间在学习前端向服务器发送数据和请求数据,下面总结了一下向服务器发送请求用get和post的几种不同请求方式: 1.用form表单的方法:(1)get方法 前端代码: <form act ...

  7. ajax异步请求

    做前端开发的朋友对于ajax异步更新一定印象深刻,作为刚入坑的小白,今天就和大家一起聊聊关于ajax异步请求的那点事.既然是ajax就少不了jQuery的知识,推荐大家访问www.w3school.c ...

  8. C# MVC 5 - 生命周期(应用程序生命周期&请求生命周期)

    本文是根据网上的文章总结的. 1.介绍 本文讨论ASP.Net MVC框架MVC的请求生命周期. MVC有两个生命周期,一为应用程序生命周期,二为请求生命周期. 2.应用程序生命周期 应用程序生命周期 ...

  9. nodejs进阶(5)—接收请求参数

    1. get请求参数接收 我们简单举一个需要接收参数的例子 如果有个查找功能,查找关键词需要从url里接收,http://localhost:8000/search?keyword=地球.通过前面的进 ...

随机推荐

  1. run

    和配置块不同,运行块在注入器创建之后被执行,它是所有AngularJS应用中第一个被执行的方法运行块通常用来注册全局的事件监听器.例如,我们会在.run()块中设置路由事件的监听器以及过滤未经授权的请 ...

  2. Linux如何在(localhost)本地打开html

    自己实验的结果,可能不是最好的办法,方法不唯一 1. 下载Tomcat https://www.cnblogs.com/liangweiping/p/5113857.html 如何查看本机的端口服务 ...

  3. day python011函数的进阶

    形参: 1.位置传参  2. 默认值传参. 3.动态传参 一   动态传参(形参的一种): 之前我们说过了了传参, 如果我们需要给⼀一个函数传参, ⽽而参数⼜又是不确定的. 或者我给⼀一个函数传很多参 ...

  4. C++学习(三十三)(C语言部分)之 队列

    队列测试代码笔记如下: #include<stdio.h> #define SIZE 10 typedef struct Queue { int data[SIZE]; //队列的容量 i ...

  5. EHCache学习

    EhCache 基础知识 吐嘈 clusteredShared的size会直接占用内存,而不是像redis那用动态的增大 clusteredDedicated能够动态增大,但是还是必须指定每个cach ...

  6. Python基础线程和协程

    线程: 优点:共享内存,IO操作时,创造并发操作 缺点:枪战资源 线程不是越多越好,具体案例具体分析,请求上下文切换耗时 IO密集型适用于线程,IO操作打开文件网络通讯类,不需要占用CPU,只是由CP ...

  7. hdu3374 String Problem KMP+最大最小表示法

    Give you a string with length N, you can generate N strings by left shifts. For example let consider ...

  8. js判断是否是闰年

    JavaScript判断值是否是闰年: 判断是否闰年公式:(year%4==0 && year%100 !=0) ||(year%400 ==0) var year = prompt( ...

  9. LA3485 Bridge

    题意 PDF 分析 以<训练指南>上的分析为准. 二分法时间复杂度\(O(\log v)\) 代码 #include<bits/stdc++.h> #define rg reg ...

  10. Node学习笔记:建立TCP服务器和客户端之间的通信

    结构: socket是应用层和传输层的桥梁.(传输层之上的协议所涉及的数据都是在本机处理的,并没进入网络中) 涉及数据: socket所涉及的数据是报文,是明文. 作用: 建立长久链接,供网络上的两个 ...