Springboot HTTP请求,Springboot HTTP 请求 Demo。Get/Post

JSON 2018-02-05 21:29:54 32140

 今天做了在做年会活动项目的时候,为了增加了一个语义分析,项目是   Springboot   搭建的,那么   Springboot   我记得是有   HTTP   请求的轮子,那么就不造了,直接使用,这里就分享一下。

Rest  HTTP请求~RestTemplate

RestTemplate 主要是用来做 Rest 请求,所以是RestClient。下面的   Demo   是用来做一个普通的   HTTP   请求。

直接上代码了:

log.debug("语义分析调用开始");
HttpComponentsClientHttpRequestFactory httpRequestFactory = new HttpComponentsClientHttpRequestFactory();
//设置超时时间,请求时间,连接时间,读取时间,都是1秒,这里都是用静态变量
httpRequestFactory.setConnectionRequestTimeout(Constant.I1000);
httpRequestFactory.setConnectTimeout(Constant.I1000);
httpRequestFactory.setReadTimeout(Constant.I1000);
//获取对话
RestTemplate restTemplate = new RestTemplate(httpRequestFactory);
HttpHeaders headers = new HttpHeaders();
//JSON contentType
headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
//我们发起 HTTP 请求还是最好加上"Connection","close" ,有利于程序的健壮性
headers.set("Connection","close");
HttpEntity<String> requestEntity = new HttpEntity<>(content, headers);

ResponseEntity<String> response;
try {
    //发起请求
    response = restTemplate.exchange(String.format(Constant.LEXICON_URL,URLEncoder.encode(content, Constant.UTF_8)),
            HttpMethod.GET,//get
            requestEntity,
            String.class);
    //获取返回值
    String resTxt = response.getBody();
    if(isNotBlank(resTxt)){
        Map<String,Object> map = new Gson().fromJson(resTxt,Map.class);
        /**
         * 返回值
         * {"result":0,"content":"曲项向天歌"}
         * result 在反转对象的时候,会变成 Double 类型,是0.0
         */
        if(Constant.D0.equals(map.get("result"))){
            //获取返回值
            content =  (String) map.get("content");
            //判断返回值是否有{br},替换成   \n
            if(isNotBlank(content) && contains(content,"{br}")){
                content = infoFilter(content.replaceAll("\\{br\\}","\n"));

            }
        }
    }
    dto.setContent(content);
    log.debug("语义分析调用结束");
} catch (RestClientException e) {
    throw e;
}

常量池:

Integer I1000 = new Integer(1000);
Double D0 = new Double(0.0);
String UTF_8  =   "utf-8";
String LEXICON_URL =   "http://api.qingyunke.com/api.php?key=free&appid=0&msg=%s";
String LEXICON_MARK =   "!!(";

语义分析API  介绍

API地址:http://api.qingyunke.com/

智能机器人API接口说明
支持功能:天气、翻译、藏头诗、笑话、歌词、计算、域名信息/备案/收录查询、IP查询、手机号码归属、人工智能聊天
接口地址:http://api.qingyunke.com/api.php?key=free&appid=0&msg=关键词
     key 固定参数free
     appid 设置为0,表示智能识别,可忽略此参数
     msg 关键词,请参考下方参数示例,该参数可智能识别,该值请经过 urlencode 处理后再提交
返回结果:{"result":0,"content":"内容"}
     result 状态,0表示正常,其它数字表示错误
     content 信息内容,中文请做 urlencode
温馨提示:本API完全免费使用(建议频率控制在1000次/1小时以内),我们将尽可能提供最快最稳定的免费服务器


版权所属:SO JSON在线解析

原文地址:https://www.sojson.com/blog/273.html

转载时必须以链接形式注明原始出处及本声明。

本文主题:

如果本文对你有帮助,那么请你赞助我,让我更有激情的写下去,帮助更多的人。

关于作者
一个低调而闷骚的男人。
相关文章
Springboot HTTP Get/Post 请求讲解,Springboot几行代码完成Http请求
Http Get 请求,Java 请求工具类封装
在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具【更新说明】
Java 实现在线HTTP接口测试 - HTTP GET/POST模拟请求测试工具
Java 之 HTTP请求乱码解决,GZIP 返回值乱码解决
HTTP模拟请求有几种方法
HTTP模拟请求有几种方法
JQuery Ajax四种写法,Ajax请求返回JSON 操作Demo
Springboot + Mybatis,数据库多数据源配置项目Demo【源码下载】
Springboot + Freemarker 集成配置
最新文章
文件上传漏洞与防御 4058
前端构建工具选型指南:Webpack、Vite、Rollup、esbuild 深度对比 1444
物联网时代2026年时序数据库选型指南 1151
SaaS行业面临AI挑战:从“无限复用”到“灵活适应” 1269
神经网络:从构造到模型训练全链路解析 1168
一文吃透 Redis 核心存储结构:ziplist、listpack 与哈希表扩容 / 并发查询 1593
Linux sudo提权完整指南:从基础用法到生产级安全配置 691
XSS 和 CSRF 的本质区别及开发防御全解析 772
JVM垃圾回收(GC)全维度解析:从原理到调优实战 813
Linux动静态库与ELF加载全解析:从实操制作到底层原理 912
最热文章
免费天气API,天气JSON API,不限次数获取十五天的天气预报 783114
最新MyEclipse8.5注册码,有效期到2020年 (已经更新) 711464
苹果电脑Mac怎么恢复出厂系统?苹果系统怎么重装系统? 679993
Jackson 时间格式化,时间注解 @JsonFormat 用法、时差问题说明 562673
我为什么要选择RabbitMQ ,RabbitMQ简介,各种MQ选型对比 512621
Elasticsearch教程(四) elasticsearch head 插件安装和使用 484794
Jackson 美化输出JSON,优雅的输出JSON数据,格式化输出JSON数据... ... 302947
Java 信任所有SSL证书,HTTPS请求抛错,忽略证书请求完美解决 247433
Elasticsearch教程(一),全程直播(小白级别) 233097
谈谈斐讯路由器劫持,你用斐讯路由器,你需要知道的事情 228329
支付扫码

所有赞助/开支都讲公开明细,用于网站维护:赞助名单查看

查看我的收藏

正在加载... ...