SmartBi集成到第三方系统

最近项目有所涉及到SmartBi集成的相关事项,使用了Nginx代理配置优化,特此记录下。

复制代码
import lombok.extern.slf4j.Slf4j;
import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.cookie.Cookie;
import org.apache.http.impl.client.BasicCookieStore;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;

/***
 *@title SmartBiController
 *@description SmartBi集成到第三方系统
 *@author 
 *@version 1.0.0
 *@create 
 **/
@Slf4j
@Controller
@RequestMapping("/smartbi")
public class SmartBiController {

    @Value("${smartbi.loginUrl}")
    private String smartBiLoginUrl;
    @Value("${smartbi.url}")
    private String smartBiUrl;
    @Value("${smartbi.resiQy}")
    private String smartBiRidQy;
    @Value("${smartbi.resiGs}")
    private String smartBiRidGs;
    @Value("${smartbi.user}")
    private String smartBiUser;
    @Value("${smartbi.password}")
    private String smartBiPassword;

    @RequestMapping(value = "/login", method = RequestMethod.POST)
    public void login(HttpServletResponse response) throws Exception {
        BasicCookieStore cookieStore = new BasicCookieStore();
        CloseableHttpClient httpClient = HttpClients.custom().setDefaultCookieStore(cookieStore).build();

        HttpPost loginRequest = new HttpPost(smartBiLoginUrl);
        List<NameValuePair> params = new ArrayList<>();
        params.add(new BasicNameValuePair("username", smartBiUser));
        params.add(new BasicNameValuePair("password", smartBiPassword));

        loginRequest.setEntity(new UrlEncodedFormEntity(params));
        try (CloseableHttpResponse httpResponse = httpClient.execute(loginRequest)){
            int statusCode = httpResponse.getStatusLine().getStatusCode();
            if (statusCode != 200) {
                log.error("登录失败:{}", statusCode);
                throw new IllegalArgumentException("登录失败:" + httpResponse.getStatusLine().getReasonPhrase());
            }
            // 获取Cookie
            List<Cookie> cookies = cookieStore.getCookies();
            for (Cookie cookie : cookies) {
                javax.servlet.http.Cookie respCookie = new javax.servlet.http.Cookie(cookie.getName(), cookie.getValue());
                respCookie.setPath("/");
                response.addCookie(respCookie);
            }
            response.setCharacterEncoding("UTF-8");
            response.setHeader("Cache-Control", "no-cache");
            response.setHeader("Pragma", "no-cache");
            response.setDateHeader("Expires", 0);
        }
    }

    @RequestMapping(value = "/getSmartBiUrl", method = RequestMethod.GET)
    public String getSmartBiUrl(@RequestParam(name = "type") String type) throws Exception {
        String resultUrl = "";
        if ("1".equals(type)) {
            resultUrl = smartBiUrl + "?resid=" + smartBiRidQy;
        } else {
            resultUrl = smartBiUrl + "?resid=" + smartBiRidGs;
        }
        log.info("登录SmartBi地址:{}", resultUrl);
        return resultUrl;
    }
}
相关推荐
杨充3 分钟前
03.计算机基础CPU设计
java·开发语言
无所事事O_o4 分钟前
【监控报警体系建设】监控标准与最佳实践
java·架构·监控
摇滚侠9 分钟前
Java 项目教程《黑马商城》OpenFeign 15 - 19
java·开发语言
小小小米粒10 分钟前
线程池创建模版
java
TE-茶叶蛋12 分钟前
`@interface` 解析
java
摇滚侠13 分钟前
Java 项目教程《黑马商城》微服务拆分 05 - 10
java·开发语言·微服务
PPPPickup17 分钟前
实习日志5.7
java
_Evan_Yao17 分钟前
return 的迷途:try-catch-finally 中 return 的诡异顺序与 Spring 事务暗坑
java·后端·spring·mybatis
薛定谔的猫喵喵18 分钟前
Spring Boot Jar包修改配置文件和Class中硬编码IP的完整指南
java·spring boot·反编译·class
Seven9722 分钟前
Tomcat Request请求处理过程:Connector
java