发送http和https请求工具类 Json封装数据

在一些业务中我们可要调其他的接口(第三方的接口) 这样就用到我接下来用到的工具类。
用这个类需要引一下jar包的坐标

       <dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.11.3</version></dependency>

引好坐标后就可以使用这个工具类了;

Connection.Response post = HttpUtils.post("http://localhost:10090/Controller/httpToJson",str);
String body = post.body();
System.out.println("响应报文:"+body);

str代表你需要传的参数 一般是json类型的数据

访问成功后一般会返回你一个json的数据,但是这个数据有一些问题,它会进行转译。我把这个字符串进行了一些处理。

{"result":"{\"FoodID\":\"A66J54DW9IKJ75U3\",\"FoodName\":\"桃子\",\"FoodBrand\":\"龙冠\",\"FoodPlace\":\"吉林\",\"FoodText\":\"四打击我家的娃哦哦囧\",\"FoodImg\":\"sdasdasdasd\",\"FoodProInfo\":[{\"ProjectName\":\"浇水\",\"UserName\":\"周锐\",\"OperationDescribe\":\"给桃子树浇水茁壮成长\",\"ImgUrl\":\"asdlpalplpd23\",\"OperationTm\":\"20200616103856\"}],\"FoodPackInfo\":null,\"FoodDetectionInfo\":null,\"FoodLogInfo\":null}","code":0,"message":"查询智能合约成功"}

对这个串进行替换等一些操作,然后把它转成json对象。通过json工具类把它自动封装到实体类型中,
(在进行封装实体的时候一定要注意,json串的属性和实体的属性要完全相同)否则会报错的(避免入坑)

 Connection.Response post = HttpUtils.post("http://localhost:10090/fabricController/queryChaincode",str);String body = post.body();String replace = body.replace("\\\"", "\"");String replace1 = replace.replace(":\"{", ":{");String replace2 = replace1.replace("}\",", "},");String replace3 = replace2.replace("{\"result\":", "");String replace4 = replace3.replace(",\"code\":0,\"message\":\"查询智能合约成功\"}", "");            com.alibaba.fastjson.JSONObject jsonObject = com.alibaba.fastjson.JSONObject.parseObject(replace4);FoodAllInfo foodAllInfo = JSON.parseObject(replace4, FoodAllInfo.class);
package com.gblfy.order.utils;import org.jsoup.Connection;
import org.jsoup.Connection.Response;
import org.jsoup.Jsoup;import javax.net.ssl.*;
import java.io.*;
import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;public class HttpUtils {/*** 请求超时时间*/private static final int TIME_OUT = 120000;/*** Https请求*/private static final String HTTPS = "https";/*** 发送Get请求** @param url 请求URL* @return 服务器响应对象* @throws IOException*/public static Response get(String url) throws IOException {return get(url, null);}/*** 发送Get请求** @param url     请求URL* @param headers 请求头参数* @return 服务器响应对象* @throws IOException*/public static Response get(String url, Map<String, String> headers) throws IOException {if (null == url || url.isEmpty()) {throw new RuntimeException("The request URL is blank.");}// 如果是Https请求if (url.startsWith(HTTPS)) {getTrust();}Connection connection = Jsoup.connect(url);connection.method(Connection.Method.GET);connection.timeout(TIME_OUT);connection.ignoreHttpErrors(true);connection.ignoreContentType(true);if (null != headers) {connection.headers(headers);}Response response = connection.execute();return response;}/*** 发送JSON格式参数POST请求** @param url    请求路径* @param params JSON格式请求参数* @return 服务器响应对象* @throws IOException*/public static Response post(String url, String params) throws IOException {return doPostRequest(url, null, null, null, params);}/*** 发送JSON格式参数POST请求** @param url     请求路径* @param headers 请求头中设置的参数* @param params  JSON格式请求参数* @return 服务器响应对象* @throws IOException*/public static Response post(String url, Map<String, String> headers, Map<String, String> params,String flag) throws IOException {return doPostRequest(url,headers,params,null,null);}/*** 字符串参数post请求** @param url      请求URL地址* @param paramMap 请求字符串参数集合* @return 服务器响应对象* @throws IOException*/public static Response post(String url, Map<String, String> headers) throws IOException {return doPostRequest(url, headers, null, null, null);}/*** 带上传文件的post请求** @param url      请求URL地址* @param paramMap 请求字符串参数集合* @param fileMap  请求文件参数集合* @return 服务器响应对象* @throws IOException*/public static Response post(String url, Map<String, String> paramMap, Map<String, File> fileMap)throws IOException {return doPostRequest(url, null, paramMap, fileMap, null);}/*** 执行post请求** @param url      请求URL地址* @param paramMap 请求字符串参数集合* @param fileMap  请求文件参数集合* @return 服务器响应对象* @throws IOException*/private static Response doPostRequest(String url, Map<String, String> headers, Map<String, String> paramMap,Map<String, File> fileMap, String jsonParams) throws IOException {if (null == url || url.isEmpty()) {throw new RuntimeException("The request URL is blank.");}// 如果是Https请求if (url.startsWith(HTTPS)) {getTrust();}Connection connection = Jsoup.connect(url);connection.method(Connection.Method.POST);connection.timeout(TIME_OUT);connection.ignoreHttpErrors(true);connection.ignoreContentType(true);if (null != headers) {connection.headers(headers);}// 收集上传文件输入流,最终全部关闭List<InputStream> inputStreamList = null;try {// 添加文件参数if (null != fileMap && !fileMap.isEmpty()) {inputStreamList = new ArrayList<InputStream>();InputStream in = null;File file = null;Set<Entry<String, File>> set = fileMap.entrySet();for (Entry<String, File> e : set) {file = e.getValue();in = new FileInputStream(file);inputStreamList.add(in);connection.data(e.getKey(), file.getName(), in);}}// 设置请求体为JSON格式内容else if (null != jsonParams && !jsonParams.isEmpty()) {connection.header("Content-Type", "application/json;charset=UTF-8");connection.requestBody(jsonParams);}// 普通表单提交方式else {connection.header("Content-Type", "application/x-www-form-urlencoded");}// 添加字符串类参数if (null != paramMap && !paramMap.isEmpty()) {connection.data(paramMap);}Response response = connection.execute();return response;} catch (FileNotFoundException e) {throw e;} catch (IOException e) {throw e;}// 关闭上传文件的输入流finally {if (null != inputStreamList) {for (InputStream in : inputStreamList) {try {in.close();} catch (IOException e) {e.printStackTrace();}}}}}/*** 获取服务器信任*/private static void getTrust() {try {HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() {@Overridepublic boolean verify(String hostname, SSLSession session) {return true;}});SSLContext context = SSLContext.getInstance("TLS");context.init(null, new X509TrustManager[] { new X509TrustManager() {@Overridepublic void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {}@Overridepublic void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {}@Overridepublic X509Certificate[] getAcceptedIssuers() {return new X509Certificate[0];}} }, new SecureRandom());HttpsURLConnection.setDefaultSSLSocketFactory(context.getSocketFactory());} catch (Exception e) {e.printStackTrace();}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/519943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2亿用户背后的Flutter应用框架Fish Redux

背景 在闲鱼深度使用 Flutter 开发过程中&#xff0c;我们遇到了业务代码耦合严重&#xff0c;代码可维护性糟糕&#xff0c;如入泥泞。对于闲鱼这样的负责业务场景&#xff0c;我们需要一个统一的应用框架来摆脱当下的开发困境&#xff0c;而这也是 Flutter 领域空缺的一块处…

打包上传web html,将webApp打包上传到App Store

将webApp打包上传到Appstore流程&#xff1a;先将html5写好的webApp通过html5编辑器Builder打包为ipa包&#xff0c;打包流程下图image发行为原生安装包后如图所示&#xff1a;image咋们发行的是iOS版本&#xff0c;所以最上面一栏选者iOS,支不支持iPad版本看自己需求&#xff…

国内首家!华为获5G核心网电信设备进网许可证;亚马逊或颠覆博通等芯片制造商?2020年5G总投资额达0.9万亿元……...

关注并标星星CSDN云计算 速递、最新、绝对有料。这里有企业新动、这里有业界要闻&#xff0c;打起十二分精神&#xff0c;紧跟fashion你可以的&#xff01;每周两次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go goiPhone 12全系渲染图&#xff08;图片来源网络&am…

http发送jsonn报文get/post请求

文章目录一、第1种方式1. 因依赖2. 工具类测试方法3. 服务端接收二、第2种方式三、第3种方式3.1. 引依赖3.2. 工具类测试3.3. 服务端代码一、第1种方式 1. 因依赖 <!-- https://mvnrepository.com/artifact/commons-httpclient/commons-httpclient --><dependency>…

老代码多=过度耦合=if else?阿里巴巴工程师这样捋直老代码

简介 在业务开发的过程中&#xff0c;往往存在平台代码和业务代码耦合严重难以分离、业务和业务之间代码交织缺少拆解的现象。平台和业务代码交织导致不易修改&#xff0c;不同业务的代码交织增加了不同负责团队之间的协同成本。因此不论从代码质量&#xff0c;还是从团队协作…

计算机专业直接工作简历,2017计算机专业工作简历

如果是现场书写简历的话。字迹潦草&#xff0c;涂改超过3处&#xff0c;一般说明此人比效粗心。我一直觉得不仅相由心生&#xff0c;字也一样。大方开朗的人&#xff0c;字迹不会太小。而且文化程度越高&#xff0c;字迹不说特别漂亮&#xff0c;也不会难看到入不了眼。2017计算…

阿里高级技术专家:研发效能的追求永无止境

背景 大约在5年前&#xff0c;也就是2013年我刚加入阿里的时候&#xff0c;那个时候 DevOps 的风刚吹起来没多久&#xff0c;有家公司宣称能够一天发布几十上百次&#xff0c;这意味着相比传统软件公司几周一次的发布来说&#xff0c;他们响应商业需求的能力可以甩后者几条街&…

就因为一个笔记本,运营和产品吵得不可开交......

上班最讨厌的一件事情&#xff0c;莫过于开会&#xff0c;因为每次开会感觉就要吵架&#xff0c;这个今天开会又吵架了&#xff0c;吵架竟然是因为产品小姐姐的笔记本。产品小姐姐用了一本可擦笔记本记录会议内容&#xff0c;运营小姐姐竟然说这个本子有什么用&#xff0c;不就…

Spring Boot 配置SSL 实现HTTPS

文章目录1. 简介2. 证书生成3. 证书引入4. 创建测试index5. 配置6. 创建配置类7. 创建控制器测试8. 浏览器验证1. 简介 传输层安全性协议&#xff08;英语&#xff1a;Transport Layer Security&#xff0c;缩写作 TLS&#xff09;&#xff0c;及其前身安全套接层 &#xff08…

一幅GAN网络创造的肖像图卖了40万美金,但那又怎样?

在2018年一场著名的拍卖会上&#xff0c;一部AI制作的肖像以432,500美元的价格成交&#xff01;这篇新闻在科技媒体上被广泛讨论&#xff0c;有些人认为这一事件对人类艺术家构成了威胁。其实&#xff0c;这只是深度学习快速发展中众多不可思议的案例中的一个&#xff0c;这些故…

html广告悬浮窗口,JS实现悬浮移动窗口(悬浮广告)的特效

js方法&#xff1a;复制代码 代码如下: New Document window.οnlοadfunction(){//写入var oneInner document.createElement("div");oneInner.setAttribute("style","background:#663398;position:absolute;width:100px;height:100px;border:solid…

PyTorch可视化理解卷积神经网络

如今&#xff0c;机器已经能够在理解、识别图像中的特征和对象等领域实现99&#xff05;级别的准确率。生活中&#xff0c;我们每天都会运用到这一点&#xff0c;比如&#xff0c;智能手机拍照的时候能够识别脸部、在类似于谷歌搜图中搜索特定照片、从条形码扫描文本或扫描书籍…

区块链工程师平均薪资 25~50k?6 个理由告诉你为什么要懂区块链!

作者 | Carol出品 | 区块链大本营&#xff08;blockchain_camp&#xff09;* 文末可参与抽奖活动&#xff01;如果说有一个什么领域&#xff0c;能让中科院、华为、腾讯、京东、360、微众银行的大咖汇聚在一起&#xff0c;那一定是——区块链。悄咪咪地给大家剧透一下&#xff…

SpringBoot Controller接收参数的几种常用方式

第一类&#xff1a;请求路径参数 1、PathVariable 获取路径参数。即url/{id}这种形式。 2、RequestParam 获取查询参数。即url?name这种形式 例子 GET http://localhost:8080/demo/123?namesuki_rong 对应的java代码 GetMapping("/demo/{id}") public void demo…

计算机应用基础抢答题,计算机应用基础问答题

适用于准备计算机应用基础考试的考生1.详述计算系统的主要技术指标&#xff0c;并举例说明它们的含义。 答&#xff1a;1主频&#xff1a;主频即时钟频率&#xff0c;指CPU在单位时间发出的脉冲数。表示CPU的运行速度&#xff0c;是以赫兹为单位&#xff0c;如CPU主频3.0GHz&am…

NLP度量指标BELU真的完美么?

刚接触自然语言处理的朋友通常会问我&#xff1a;当系统的输出是文本&#xff0c;而非对输入文本进行某种分类&#xff0c;如何对该系统进行评估。当模型的输入是文本信息&#xff0c;输出也是文本信息时&#xff0c;我们称之为序列到序列问题&#xff0c;也可称为字符串转换问…

开放华为30年研发能力与实践 助力DevOps真正落地

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 刘丹受访者 | 汪维敏出品 | CSDN云计算&#xff08;ID&#xff1a;CSDNcloud&#xff09;高速的中子撞击U235原子核&#xff0c;使其分裂成两个原子核&#xff0c;释放出巨大能量&#xff0c;同时产生的几个中子再去撞击其它…

Euler 今日问世!国内首个工业级的图深度学习开源框架,阿里妈妈造

千呼万唤始出来&#xff01;阿里妈妈正式公布重磅开源项目——图深度学习框架Euler。这是国内首个在核心业务大规模应用后开源的图深度学习框架。此次开源&#xff0c;Euler内置了大量的算法供用户直接使用&#xff0c;相关代码已经可在GitHub上进行下载。 图学习和深度学习都…

查询某一支接口,指定时间段的数据 按分钟排序

--查询某一支接口,指定时间段的数据 按分钟排序 select a.servicename,reqdate,substr(reqtime,1,5),count&#xff08;1&#xff09;from 表名 awhere servicename 接口名and reqdate date 2020-06-28and reqtime > 16:00:00and reqtime < 17:00:00group by a.service…

天啦噜!在家和爱豆玩quot;剪刀石头布quot;,阿里工程师如何办到?

如今&#xff0c;90、00后一代成为消费主力&#xff0c;补贴、打折、优惠等“价格战”已很难建立起忠诚度&#xff0c;如何与年轻人建立更深层次的情感共鸣&#xff1f;互动就是一种很好的方式&#xff0c;它能让用户更深度的参与品牌/平台呈现的内容&#xff0c;提供更深层的参…