Springboot调用http(https)接口小妙招,新手小白版

这篇具有很好参考价值的文章主要介绍了Springboot调用http(https)接口小妙招,新手小白版。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

有的新手彦祖在搬砖过程中会遇到调用别人接口来获取数据的需求,这其中涉及调用一些相关类及方法的调用,最近干活又要用这个了,把以前的代码搬出来套用下,死活报错协议加密证书啥的问题,真想感叹卑微打工仔挣点钱养家糊口不容易。无所谓,我师傅会出手,过来一眼就看出我的问题,我用的http协议写的,人家接口测试环境是https协议写的,https协议有加密方式,去参照大佬的写法封装整理了两个类。开发差不多完成后在这记录分享下,不多bb直接上源码了。

package com.inspur.dehongtf.controller.http_data_get;

import com.alibaba.fastjson.JSONObject;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.ssl.TrustStrategy;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;

import javax.net.ssl.SSLContext;
import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;
import java.util.Arrays;
import java.util.Map;

public class httpsRequest {

    public JSONObject send2(String url, Map<String, Object> params) {
           HttpHeaders headers = new HttpHeaders();
           headers.setContentType(MediaType.APPLICATION_JSON);
           headers.setAccept(Arrays.asList(MediaType.ALL));
           HttpEntity<Object> entity = new HttpEntity<>(JSONObject.toJSONString(params), headers);
           try {
                String body = getRestTemplate().postForObject(url, entity, String.class);
                return JSONObject.parseObject(body);
              }

           catch (Exception e) {
                e.printStackTrace();
                               }
           return null;
    }

    public static RestTemplate getRestTemplate() throws KeyStoreException, NoSuchAlgorithmException, KeyManagementException {
               SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, new TrustStrategy() {
               @Override
               public boolean isTrusted(X509Certificate[] arg0, String arg1) throws CertificateException { return true;
               }
        }).build();

        SSLConnectionSocketFactory csf = new SSLConnectionSocketFactory(sslContext,
                new String[]{"TLSv1"},
                null,
                NoopHostnameVerifier.INSTANCE);

        CloseableHttpClient httpClient = HttpClients.custom()
                .setSSLSocketFactory(csf)
                .build();

        HttpComponentsClientHttpRequestFactory requestFactory =
                new HttpComponentsClientHttpRequestFactory();

        requestFactory.setHttpClient(httpClient);
        RestTemplate restTemplate = new RestTemplate(requestFactory);
        return restTemplate;
    }
}

以上是一个自己再次封装的用于调用https协议的类,send2方法调用了getRestTemplate方法,在测试类中调用时传入两个参数,其一是String类型的url,其二是指定泛型的map集合,也就是post的请求参数,对了,这个方法目前只适用于post方法。

如果有彦祖在看,顺便给彦祖们测试下

springboot调用https接口,SpringBoot开发,http,spring boot,https,Powered by 金山文档
springboot调用https接口,SpringBoot开发,http,spring boot,https,Powered by 金山文档
springboot调用https接口,SpringBoot开发,http,spring boot,https,Powered by 金山文档

这里定义并书写了参数和url,实例化上面的httpsRequest类,传入url和请求参数调用send2方法,得到的结果就是在url接口指定参数下的数据,下面输出看一下

springboot调用https接口,SpringBoot开发,http,spring boot,https,Powered by 金山文档

在控制层调用上面类的getParams方法,得到返回数据,启动工程,postman调用自己的接口,输出看一下数据,没问题。

springboot调用https接口,SpringBoot开发,http,spring boot,https,Powered by 金山文档

这里我也写了一个http的类,但是好像https这个类能共用http与https,深层原理咱也不知道,http类如下,难免以后找不到了,又被同事说:多删几个妹子,不要删代码。文章来源地址https://www.toymoban.com/news/detail-535799.html

package com.inspur.dehongtf.controller.http_data_get;

import com.alibaba.fastjson.JSONObject;
import org.springframework.http.HttpEntity;
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.client.RestTemplate;

import java.util.Map;

public class httpRequest {
    public JSONObject send1(String url, Map<String, Object> params) {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
        RestTemplate restTemplate = new RestTemplate();
        JSONObject obj = new JSONObject(params);
        String s = obj.toString();
        HttpEntity request = new HttpEntity(s, headers);
        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, request, String.class, new Object[0]);
        JSONObject responseData = JSONObject.parseObject((String)responseEntity.getBody());
        return responseData;
}

}

到了这里,关于Springboot调用http(https)接口小妙招,新手小白版的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ABAP - 调用HTTP/HTTPS接口上传文件

    如果调用该外部接口是需要使用Oauth2.0的话,可参照该文章里的OAuth2.0的部分: ABAP代码使用OAuth2.0 Client Credential调用外部API 首先,先将文件内容转成binary格式的内表 , 可参照文章: 内表文件的,可参照ABAP - 下载ALV内表 - download ALV internal table SOST里的附件的,可参照ABAP获取发

    2024年02月20日
    浏览(44)
  • SpringBoot将http转换成https

    首先看项目,如果有nginx代理,则只需要改nginx配置即可。 如果没有nginx代理,则直接在springboot的resource下增加一个p12文件或者jks文件。 这里用p12来进行演示: 首先要获得ssl证书,命令查看是否有openssl 这里我的版本是3,会有一个bug,当生成p12文件运行时会报错:ObjectIdentifi

    2024年02月01日
    浏览(47)
  • springboot项目同时支持http和https访问

    前提是电脑安装了JDK并配置了环境变量,打开CMD,并 输入 密码和证书内容根据自己情况可以自定义( 我设置的密码是:dev123 ),如图所示: 以上操作后即生成证书,证书位置在cmd的路径位置,一般在路径C:UsersAdministratorserver.keystore 将 文件 server.keystore 复制到 Springboot项目

    2024年04月23日
    浏览(30)
  • SpringBoot 调用外部接口

    一个系统肯定少不了要和外部系统进行通信,所以就必须得访问外部接口。 本次演示的是使用的是 高德天气api接口 使用插件方式,比如自带的HttpClient,或者OkHttp,甚至是原生的HttpURLConnection 等等,这里以HttpClient为例。 1、封装工具类 简单封装的get请求 2、测试方法 3、结果

    2024年02月09日
    浏览(45)
  • SpringBoot 3.1 新版HTTP调用

    在SpringBoot3版本发布后 官方便声明了推荐使用了内置声明式的HTTP客户端。 一、声明式HTTP客户端使用(依赖引入) 二、被调用方编写(粗略代码逻辑) 三、调用方 HTTP端点编写 四、 工具类封装 五、调用地址定义常量   六、业务调用代码编写 七、调用接口 八、请求示例以及响应

    2024年02月12日
    浏览(38)
  • springboot添加SSL证书,支持https与http

    将证书文件放在/resource目录下 修改配置文件

    2024年02月10日
    浏览(43)
  • 【SpringBoot18】SpringBoot 调用外部接口的三种方式

    SpringBoot不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。在Spring-Boot项目开发中,存在着本模块的代码需要访问外面模块接口,或外部url链接的需求, 比如在apaas开发过程中需要封装接口在接口中调用apaas提供的接口(

    2023年04月11日
    浏览(77)
  • Nginx配置springboot+vue项目http跳转https

    java生成证书 添加依赖 复制keystore到springboot资源目录,修改application.yml配置  启动项目 nginx配置 开启ssl     重启nginx -s reload 访问localhost:81将跳转到https://localhost/login?redirect=/index  

    2024年02月12日
    浏览(51)
  • SpringBoot项目(Tomcat启动https端口)——springboot配置Tomcat两个端口,https和http的方式 & jar的打包和运行

    1.springboot配置Tomcat两个端口,https和http的方式; 2.在https协议下,发送axios请求没反应,暂时用form表单解决; 3.运行jar包template might not exist报错及解决; 代码位置: https://gitcode.net/Pireley/springboot-tomcat-http-https 严格来说https不是一个独立协议,只是在http协议基础上增加了SSL/T

    2024年02月03日
    浏览(53)
  • SpringBoot 项目中 对http调用异常处理

    spring 中 http调用 resp 会返回3个值 status/heard/body 分2种情况的异常 1.status 代表了通信异常, 也是我们常说的 http 状态码         只能是纯数字         200-成功, 404-不能访问的资源, 500-服务器异常         比较坑的是, 有些服务会, 把业务异常和这个进行合并, 或者篡改  2.bod

    2024年02月17日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包