ssslinppp

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  274 随笔 :: 1 文章 :: 48 评论 :: 101万 阅读
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8


如上图,要求:

  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;
    }

}

posted on   ssslinppp  阅读(1351)  评论(7编辑  收藏  举报
编辑推荐:
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· C# 深度学习:对抗生成网络(GAN)训练头像生成模型
阅读排行:
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 用 C# 插值字符串处理器写一个 sscanf
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!
点击右上角即可分享
微信分享提示