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. 殷浩详解DDD:如何避免写流水账代码?

    简介: 在日常工作中我观察到,面对老系统重构和迁移场景,有大量代码属于流水账代码,通常能看到开发在对外的API接口里直接写业务逻辑代码,或者在一个服务里大量的堆接口,导致业务逻辑实际无法收敛,接口复用 ...

  2. Lakehouse 架构解析与云上实践

    ​简介:本文整理自 DataFunCon 2021大会上,阿里云数据湖构建云产品研发陈鑫伟的分享,主要介绍了 Lakehouse 的架构解析与云上实践. 作者简介:陈鑫伟(花名熙康),阿里云开源大数据 ...

  3. 复杂推理模型从服务器移植到Web浏览器的理论和实战

    ​简介: 随着机器学习的应用面越来越广,能在浏览器中跑模型推理的Javascript框架引擎也越来越多了.在项目中,前端同学可能会找到一些跑在服务端的python算法模型,很想将其直接集成到自己的代码 ...

  4. [FAQ] Error 1142: INDEX command denied to user

    MySQL 用户没有某个命令权限时提示的错误.具体这里提示的是没有 index 命令权限. 把某库的所有表的 index 命令授权给用户即可: grant index on xxdb.* to 'xx ...

  5. Solution Set - 贪心和数据结构

    感觉自己好菜啊,这个专题真的不太会. CF1439C Greedy Shopping Link&Submission. 容易发现,当此人连续买了一段物品之后,他的钱数至少减半.所以他最多只会买 ...

  6. Solution Set - CDQ分治&整体二分

    A[洛谷P2163].给定平面上若干个点,多次询问给定矩形内的点数. B[洛谷P3810].给定若干个三元组,对所有\(k\),求这样三元组的个数:恰有\(k\)个三元组,满足其每个分量都不超过它的相 ...

  7. 羽夏闲谈——解决 MSI 安装包指定账户已存在

    序   前几天用VS2022,升级到17.1.0版本,发现模板用不了了,但能正常打开之前用它创建的项目.我重装试图修复该问题,解决雪上加霜,报错如下: 未能安装包"Microsoft.Vis ...

  8. 「IT运维迷宫」那些让人头疼的常见问题与破局之道

    在数字化浪潮汹涌的今天,IT运维如同一座错综复杂的迷宫,稍有不慎便可能迷失方向.作为企业运营的幕后英雄,运维团队常常面临着各种突如其来的挑战.本文将带你深入探索IT运维中的那些常见"坑&qu ...

  9. GitLab 管理 NuGet 包

    1 概览 在服务器上构建项目时,需要引用 nuget.org 之外的包,如公司内部开发的.第三方未发布到 nuget.org 上的.怎么办? GitLab 提供了 Package Registry 来 ...

  10. fastposter 2.5.0 全新发布 一款电商级海报生成器

    fastposter 2.5.0 全新发布 低代码海报生成器 fastposter低代码海报生成器,一分钟完成海报开发.支持Java.Python.PHP. Go.JavaScript等多种语言. v ...