http请求方式GET,POST工具类RestTemplate
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的更多相关文章
- Http请求get、post工具类
在网上找了好久都没有找到post.get请求的工具类,现在整理了一下分享出来.http工具类如下: package com.qlwb.business.util; import java.io.Buf ...
- Java模拟http请求调用远程接口工具类
package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea ...
- Java模拟http请求远程调用接口工具类
package ln; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamRea ...
- java后端通过request对象获取请求的ip地址工具类
package cn.zgjkw.battalion.util; import org.apache.log4j.Logger; import javax.servlet.http.HttpServl ...
- HttpClientUtil请求http地址的工具类
直接贴代码: import java.io.IOException; import java.util.HashMap; import java.util.Map; import org.apache ...
- 网络请求以及网络请求下载图片的工具类 android开发java工具类
package cc.jiusan.www.utils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; ...
- 获取请求头中User-Agent工具类
public class AgentUserKit { private static String pattern = "^Mozilla/\\d\\.\\d\\s+\\(+.+?\\)&q ...
- Servlet里面request处理外部POST请求的输入流的工具类
package etcom.servlet; import java.io.BufferedReader; import java.io.IOException; import java.io.Inp ...
- 【工具类】获取请求头中User-Agent工具类
public class AgentUserKit { private static String pattern = "^Mozilla/\\d\\.\\d\\s+\\(+.+?\\)&q ...
- Hutools之http工具类
Hutools请求网络资源使用的工具类:HttpRequest和HttpResponse Get方式请求数据 Get方式请求数据Map<String,Object> paramMap = ...
随机推荐
- 小白也能懂的 Nacos 服务模型介绍
简介: 理解了 Nacos 的服务模型,也有利于我们了解 Nacos 背后的工作原理,从而确保我们正确地使用 Nacos. 作者:岛风 前言 按照目前市场上的主流使用场景,Nacos 被分成了两块功能 ...
- 阿里云云效发布研发协同工具,以新的产研协同工作方式助力实现BizDevOps
简介:2021云栖大会云效BizDevOps分论坛上,阿里云云效技术负责人陈鑫发布阿里云云效产品研发协同工具支撑ALPD理论,以新的产研协同工作方式助力实现BizDevOps. 编者按:10月21日 ...
- [Blockchain] Cosmos Starport 101 - 为你的新数据类型 生成代码
# 项目模板 $ starport app github.com/hello/planet --address-prefix your_new_prefix 项目目录结构的说明看这里: https:/ ...
- [FAQ] Member "address" not found or not visible after argument-dependent lookup in address payable.
顾名思义,address 属性不存在,请检查调用方. 比如:msg.sender.address 会有此提示,在 Solidity Contract 中,msg.sender.balance 是存在的 ...
- C语言结构体的内存分配
一.结构体内存分配原则 原则一:结构体中元素按照定义顺序存放到内存中,但并不是紧密排列.从结构体存储的首地址开始 ,每一个元素存入内存中时,它都会认为内存是以自己的宽度来划分空间的,因此元素存放的位置 ...
- 【爬虫案例】用Python爬取百度热搜榜数据!
目录 一.爬取目标 二.编写爬虫代码 三.同步视频讲解 四.完整源码 一.爬取目标 您好,我是@马哥python说,一名10年程序猿. 本次爬取的目标是:百度热搜榜 分别爬取每条热搜的: 热搜标题.热 ...
- Swift Charts 报错:Initializer ... requires that .. conform to ‘Identifiable‘
目录 1. 问题描述 2. 解决办法 1. 问题描述 在运行Swift Charts官方折线图示例时,出现了如下错误. Initializer 'init(_:content:)' requires ...
- 01 go-zero入门--单体服务demo
目录 官方文档: 视频地址: 系统环境: 配置环境: 1. golang安装 2. go module配置 3. goctl安装 4.protoc,protoc-gen-go,protoc-gen-g ...
- 微信小程序关于小说类使用官方阅读器
https://doc.weixin.qq.com/doc/w3_AAcAYAbdAFwpM63n1R5SIat3aa4cX?scode=AJEAIQdfAAoYHVCBbdAG4A1QYmAFQ 上 ...
- Java面试题:如果你这样做,你会后悔的,两次启动同一个线程~~~
当一个线程被启动后,如果再次调start()方法,将会抛出IllegalThreadStateException异常. 这是因为Java线程的生命周期只有一次.调用start()方法会导致系统在新线程 ...