http请求方式GET,POST工具类RestTemplate

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.dianping.cat.Cat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate; import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Map; public class HttpUtils {
private static final Logger logger = LoggerFactory.getLogger(HttpUtils.class); /**
* 发送GET请求
* @param url
* @param param
* @param responseClass
* @param <T>
* @return
*/
public static <T> T doGet(String url, Object param, Class<T> responseClass) {
Map<String, Object> map = com.alibaba.fastjson.JSONObject.parseObject(JSON.toJSONString(param));
StringBuilder sb = new StringBuilder();
for (String s : map.keySet()) {
sb.append(s).append("=").append(map.get(s)).append("&");
}
String str = sb.substring(0, sb.length() - 1).toString();
logger.info("doGet,url:{},param:{}", url, str);
HttpHeaders httpHeaders = new HttpHeaders();
try {
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> responseEntity = restTemplate.postForEntity(url + "?" + str, new HttpEntity<>(str, httpHeaders), String.class);
T t = JSON.parseObject(responseEntity.getBody(), responseClass);
logger.info("doGet,url:{},result:{}", url, JSON.toJSONString(t));
return t;
} catch (Exception e) {
logger.error("doGet,url:{},error:", url, e);
Cat.logError(String.format("doGet,url:%s,error:", url), e);
return null;
}
} public static <T> T doPost(String url, Object param, Class<T> responseClass) { //requestVO请求参数
org.springframework.http.HttpHeaders requestHeaders = new HttpHeaders();
requestHeaders.add("Content-Type", "application/json;charset=UTF-8");
// requestHeaders.add("User-Agent", "mysite_web");
requestHeaders.add("connection", "Keep-Alive");
// requestHeaders.add("Accept", "application/json;version=3.0;compress=false"); try {
RestTemplate template = new RestTemplate();
//设置参数,输出对象的所有字段,如果未设置则默认为""空格字符串。
String jsonStr = JSON.toJSONString(param, SerializerFeature.WriteNullStringAsEmpty);
HttpEntity<String> requestEntity = new HttpEntity<>(URLEncoder.encode(jsonStr), requestHeaders); ResponseEntity<String> response = template.exchange(url,
HttpMethod.POST, requestEntity, String.class); T t = JSON.parseObject(response.getBody(), responseClass);
logger.info("doPost,url:{},params=[{}],result:{}", url, jsonStr,JSON.toJSONString(t));
return t;
} catch (Exception e) {
logger.error("doPost,url:{},error:", url, e);
Cat.logError(String.format("doPost,url:%s,error:", url), e);
return null;
} } }

http请求方式GET,POST工具类RestTemplate的更多相关文章

  1. Http请求get、post工具类

    在网上找了好久都没有找到post.get请求的工具类,现在整理了一下分享出来.http工具类如下: package com.qlwb.business.util; import java.io.Buf ...

  2. Java模拟http请求调用远程接口工具类

    package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea ...

  3. Java模拟http请求远程调用接口工具类

    package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea ...

  4. java后端通过request对象获取请求的ip地址工具类

    package cn.zgjkw.battalion.util; import org.apache.log4j.Logger; import javax.servlet.http.HttpServl ...

  5. HttpClientUtil请求http地址的工具类

    直接贴代码: import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.apache ...

  6. 网络请求以及网络请求下载图片的工具类 android开发java工具类

    package cc.jiusan.www.utils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; ...

  7. 获取请求头中User-Agent工具类

    public class AgentUserKit { private static String pattern = "^Mozilla/\\d\\.\\d\\s+\\(+.+?\\)&q ...

  8. Servlet里面request处理外部POST请求的输入流的工具类

    package etcom.servlet; import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...

  9. 【工具类】获取请求头中User-Agent工具类

    public class AgentUserKit { private static String pattern = "^Mozilla/\\d\\.\\d\\s+\\(+.+?\\)&q ...

  10. Hutools之http工具类

    Hutools请求网络资源使用的工具类:HttpRequest和HttpResponse Get方式请求数据 Get方式请求数据Map<String,Object> paramMap = ...

随机推荐

  1. 如何基于MaxCompute快速打通数据仓库和数据湖的湖仓一体实践

    简介: MaxCompute 是面向分析的企业级 SaaS 模式云数据仓库,以 Serverless 架构提供快速.全托管的在线数据仓库服务,消除了传统数据平台在资源扩展性和弹性方面的限制,最小化用户 ...

  2. [FAQ] crontab 执行curl xxx 好像没有执行 ?

      如果你的crontab任务中的curl命令没有执行,可能有几个原因需要检查: 1. 检查命令路径:确保你在crontab任务中指定了正确的curl命令路径.你可以使用 which curl 命令来 ...

  3. [FE] nvm-windows: Microsoft/NPM/Google 推荐 Windows 的 Node.js 版本管理器, posix 的 nvm-sh/nvm

    1. 到 github 下载 nvm-setup.zip 并安装. Releases · coreybutler/nvm-windows (github.com) 2. 安装一个版本的 nodejs. ...

  4. IphoneX(10) 重启/关机, 强制重启/关机

    正常关机是同时长按 音量+ 和 右侧电源键,屏幕出现滑动按钮进行关机. 注意截图是同时短按 音量+ 和 右侧电源键. 强制关机是按照顺序按三个键:音量+   音量-  长按右侧键 Other:苹果X怎 ...

  5. WPF 编写一个测试 WM_TOUCH 触摸消息延迟的应用

    我听说在 Win10 到 Win11 的系统版本左右,微软加上了一大波触摸性能优化,准确来说是 HID 性能优化.我想测试一下在这些系统下,采用从 Windows 消息接收到 WM_TOUCH 触摸消 ...

  6. LLM应用实战:当KBQA集成LLM(二)

    1. 背景 又两周过去了,本qiang~依然奋斗在上周提到的项目KBQA集成LLM,感兴趣的可通过传送门查阅先前的文章<LLM应用实战:当KBQA集成LLM>. 本次又有什么更新呢?主要是 ...

  7. 第二讲 Cadence建立工程和元件库

    第二讲 Cadence建立工程和元件库 1.创建工程,设置图纸参数.Design Entry CIS / Orcad Capture CIS / Option /Design Template,可以设 ...

  8. 《最新出炉》系列入门篇-Python+Playwright自动化测试-43-分页测试

    1.简介 分页测试,这种一般都是公共的方法系统中都写好了,这种一般出现是数据展示比较多的时候,会采取分页的方法,而且比较固定,一般是没有问题的,因此它非常适合自动化测试,但是如何使用playwrigh ...

  9. 04.1 go-admin自动化上线到生产环境 nginx配置上线vue和go

    目录 简介 基于Gin + Vue + Element UI的前后端分离权限管理系统 一. 上线思路 1.1 首先确保项目前后端在本地可以都可以正常跑起来,如果不会可以去看一下作者的视频教程 1.2 ...

  10. Js中valueOf和toString区别和使用

    对于number.string.Boolean.object.symbol数据类型调用valueOf方法,得到的都是数据本身(null.undefined两种类型上的原型链上没有valueOf方法) ...