SpringBoot-Http请求工具类
一、编写请求配置类
import com.alibaba.fastjson.JSONObject;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.*;
import org.springframework.util.MultiValueMap;
import org.springframework.web.client.RestTemplate;
import org.springframework.web.util.UriComponentsBuilder; import java.io.IOException;
import java.net.URI;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Map;
import java.util.Objects; @Configuration
public class RestUtils { private static final RestTemplate restTemplate = new RestTemplate(); public static JSONObject get(String url, Map<String,String> urlParams){
return get(urlToUri(url,urlParams));
} //在处理企业微信某些参数时有问题
public static JSONObject get(String url){
return get(URI.create(url));
} private static JSONObject get(URI uri){
ResponseEntity<JSONObject> responseEntity =restTemplate.getForEntity(uri, JSONObject.class);
serverIsRight(responseEntity); //判断服务器返回状态码
return responseEntity.getBody();
} public static JSONObject post(String url, Map<String,String> urlParams, JSONObject json){
//组装url
return post(urlToUri(url,urlParams),json);
} public static JSONObject post(String url, JSONObject json){
//组装urL
return post(URI.create(url),json);
} private static JSONObject post(URI uri, JSONObject json){
//组装url
//设置提交json格式数据
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<JSONObject> request = new HttpEntity(json, headers);
ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(uri,request, JSONObject.class);
serverIsRight(responseEntity); //判断服务器返回状态码
return responseEntity.getBody();
} private static URI urlToUri(String url,Map<String,String> urlParams){
//设置提交json格式数据
UriComponentsBuilder uriBuilder = UriComponentsBuilder.fromHttpUrl(url);
for(Map.Entry<String,String> entry : urlParams.entrySet()) {
uriBuilder.queryParam((String)entry.getKey(), (String) entry.getValue()) ;
}
return uriBuilder.build(true).toUri();
} public static JSONObject upload(String url, MultiValueMap formParams){
//设置表单提交
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.MULTIPART_FORM_DATA);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<>(formParams, headers);
ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(url,request, JSONObject.class);
serverIsRight(responseEntity); //判断服务器返回状态码
return responseEntity.getBody();
} public static String download(String url,String targetPath) throws IOException { ResponseEntity<byte[]> rsp = restTemplate.getForEntity(url, byte[].class);
if(rsp.getStatusCode() != HttpStatus.OK){
System.out.println("文件下载请求结果状态码:" + rsp.getStatusCode());
}
// 将下载下来的文件内容保存到本地
Files.write(Paths.get(targetPath), Objects.requireNonNull(rsp.getBody()));
return targetPath; } public static byte[] dowload(String url){
ResponseEntity<byte[]> rsp = restTemplate.getForEntity(url, byte[].class);
return rsp.getBody();
} private static void serverIsRight(ResponseEntity responseEntity){
if(responseEntity.getStatusCodeValue()==200){
}else {
System.out.println("服务器请求异常:{}"+responseEntity.getStatusCodeValue());
}
} }
二、调用测试
/**
* 企业微信-读取成员
* @param userId
* @return
*/
public WxDeptUserResult getQyWxUser(String userId) {
WxDeptUserResult wxDeptResult = new WxDeptUserResult();
getAccesstoken();
try {
//替换掉accessToken
String userIdUrl = USER_DEPT_USER_URL + ACCESSTOKEN + "&userid=" + userId;
//发送get请求
JSONObject jsonObject = RestUtils.get(userIdUrl);
log.info("请求企业微信 {}, 读取成员信息 {}", userIdUrl, jsonObject);
if(jsonObject.get("errcode").equals(0)){
wxDeptResult.setUserid(jsonObject.getString("userid"));
wxDeptResult.setName(jsonObject.getString("name"));
wxDeptResult.setDepartment(((List)jsonObject.get("department")).get(0).toString());
}
} catch (Exception e) {
log.error("调用企业微信你接口-读取成员信息失败"+e.getMessage());
throw new BusinessException(ResultStatus.DEPT_USERINFO_ERROR.message());
}
return wxDeptResult;
}
具体数据如下图所示:

SpringBoot-Http请求工具类的更多相关文章
- WebUtils-网络请求工具类
网络请求工具类,大幅代码借鉴aplipay. using System; using System.Collections.Generic; using System.IO; using System ...
- Http、Https请求工具类
最近在做微信开发,使用http调用第三方服务API,有些是需要https协议,通过资料和自己编码,写了个支持http和https的工具类,经验证可用,现贴出来保留,也供需要的人使用(有不足的地方,也请 ...
- 微信https请求工具类
工作中用到的微信https请求工具类. package com.gxgrh.wechat.tools; import com.gxgrh.wechat.wechatapi.service.System ...
- HTTP请求工具类
HTTP请求工具类,适用于微信服务器请求,可以自测 代码; /// <summary> /// HTTP请求工具类 /// </summary> public class Ht ...
- 实现一个简单的http请求工具类
OC自带的http请求用起来不直观,asihttprequest库又太大了,依赖也多,下面实现一个简单的http请求工具类 四个文件源码大致如下,还有优化空间 MYHttpRequest.h(类定义, ...
- 远程Get,Post请求工具类
1.远程请求工具类 import java.io.*; import java.net.URL; import java.net.URLConnection; import java.util.L ...
- C#实现的UDP收发请求工具类实例
本文实例讲述了C#实现的UDP收发请求工具类.分享给大家供大家参考,具体如下: 初始化: ListeningPort = int.Parse(ConfigurationManager.AppSetti ...
- ajax请求工具类
ajax的get和post请求工具类: /** * 公共方法类 * * 使用 变量名=function()定义函数时,如果在变量名前加var,则这个变量变成局部变量 */var Common = ...
- 【原创】标准HTTP请求工具类
以下是个人在项目开发过程中,总结的Http请求工具类,主要包括四种: 1.处理http POST请求[XML格式.无解压]: 2.处理http GET请求[XML格式.无解压]: 3.处理http P ...
- 我的Android进阶之旅------>Android关于HttpsURLConnection一个忽略Https证书是否正确的Https请求工具类
下面是一个Android HttpsURLConnection忽略Https证书是否正确的Https请求工具类,不需要验证服务器端证书是否正确,也不需要验证服务器证书中的域名是否有效. (PS:建议下 ...
随机推荐
- 【已解决】Android----java.lang.NullPointerException:---java.lang.NullPointerException:
2021-03-06 13:26:12.274 8544-8544/com.example.helloworld E/AndroidRuntime: FATAL EXCEPTION: main Pro ...
- 理解持续测试,才算理解DevOps
软件产品的成功与否,在很大程度上取决于对市场需求的及时把控,采用DevOps可以加快产品交付速度,改善用户体验,从而有助于保持领先于竞争对手的优势. 作为敏捷开发方法论的一种扩展,DevOps强调开发 ...
- 探索Avalonia:C#跨平台UI框架的力量
随着跨平台应用的需求不断增长,开发人员需要一种能够在不同操作系统上运行的用户界面(UI)框架. Avalonia 是一种引人注目的选择.在本文中,我们将深入了解 Avalonia 是什么,它与 WPF ...
- 鸿蒙HarmonyOS实战-ArkUI组件(Progress)
一.Progress Progress组件是一种用户界面(UI)元素,用于向用户显示某些任务的进度.它通常以进度条的形式出现,显示任务完成的百分比.Progress组件可以在确定任务持续时间未知的情况 ...
- #区间dp,离散#D 弱者对决
分析 设\(dp[i][j][x]\)表示当前区间为\([i,j]\),最小值为\(x\)的最大总分, 状态转移方程可以用后缀最大值优化到\(O(n^3m)\),主要难点是输出方案 后缀最大值需要记录 ...
- Java中的类型推断和lambda表达式
目录 简介 类型的显示使用 Stream中的类型推断 类型推断中变量名字的重要性 类型推断对性能的影响 类型推断的限制 总结 简介 java是强类型的编程语言,每个java中使用到的变量都需要定义它的 ...
- 成长计划校园极客秀|基于OpenHarmony的智能阳台
前言 本文由OpenAtom OpenHarmony(以下简称"OpenHarmony")开源开发者成长计划活动的参与者李建涛提供,详细阐述了由搭载OpenHarmony系统的拓维 ...
- Windows 杀毒简单有效的方式
Windows 电脑杀毒通常会选择杀毒软件,这样太笨重,且容易占内存和存在流氓软件侵入. 推荐使用 Windows 自带的恶意软件删除工具 按住 Win + R 键,弹出运行窗口,输入 mrt. 系统 ...
- 【FAQ】调用应用内支付SDK时报错,如何用tag对问题进行排查和分析
华为应用内支付服务(In-App Purchases,IAP)为开发者提供便捷的应用内支付体验和简便的接入流程.开发者的应用集成IAP SDK后,调用IAP SDK接口,启动IAP收银台,即可实现应用 ...
- failed to push some refs to xxxx
***************ssh 秘钥上传远程仓库 1. 添加远程仓库ssh 命令 git remote add origin git@github.com:ThreeNut/zou.gi ...