網站首頁 編程語言 正文
關于Smartbi配置Sql Server數據源調用HTTP請求
要求利用存儲過程調用http接口,并返回報表!筆記
1、開啟Sql Server通訊配置
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation procedures', 1;
GO
RECONFIGURE;
GO
exec sp_configure 'Ole Automation Procedures';
GO
2、HTTP POST 請求函數
CREATE function [dbo].[fn_http_post](
@URL varchar(256),
@DATA varchar(2000),
@REQ_H_ACCEPT varchar(256),
@REQ_H_CONTENT_TYPE varchar(256)
)
returns varchar(5000)
as
BEGIN
DECLARE
@object int,
@returnStatus int,
@returnText varchar(5000),
@errMsg varchar(2000),
@httpStatus varchar(20);
exec @returnStatus = sp_oacreate 'MSXML2.ServerXMLHTTP.3.0',@object OUT;
if @returnStatus <> 0
BEGIN
exec SP_OAGetErrorInfo @object, @errMSg OUT, @returnText OUT;
return ('初始化對象失敗,'+ @errMsg + ISNULL(@returnText,''));
END
exec @returnStatus= SP_OAMethod @object, 'Open',NULL, 'POST',@URL, 'false';
if @returnStatus <> 0
BEGIN
exec SP_OAGetErrorInfo @object, @errMsg OUT, @returnText OUT;
return ('創建連接失敗,'+ @errMsg + ISNULL(@returnText,''));
END
exec @returnStatus=SP_OAMethod @object,'setRequestHeader',NULL,'Accept',@REQ_H_ACCEPT;
exec @returnStatus=SP_OAMethod @object,'setRequestHeader',NULL,'Content-Type',@REQ_H_CONTENT_TYPE;
exec @returnStatus=SP_OAMethod @object,'setRequestHeader',NULL,'Content-Length','1000000';
exec @returnStatus= SP_OAMethod @object,'send',NULL,@DATA;
if @returnStatus <> 0
BEGIN
exec SP_OAGetErrorInfo @object, @errMSg OUT, @returnText OUT;
return ('發起請求失敗,'+ @errMSg + ISNULL(@returnText,''));
END
exec @returnStatus = SP_OAGetProperty @object, 'Status', @httpStatus OUT;
if @returnStatus <> 0
BEGIN
exec sp_OAGetErrorInfo @object, @errMsg OUT, @returnText OUT;
END
if @httpStatus <> 200
BEGIN
return ('訪問錯誤,HTTP狀態代碼:'+ @httpStatus);
END
exec @returnStatus= SP_OAGetProperty @object,'responseText',@returnText OUT;
if @returnStatus <> 0
BEGIN
exec SP_OAGetErrorInfo @object, @errMSg OUT, @returnText OUT;
return ('獲取返回信息失敗,'+ @errMsg + ISNULL(@returnText,''));
END
return @returnText;
end
3、存儲過程入口
CREATE PROCEDURE [dbo].[oa_zyy_getTime]
@StartTime VARCHAR(20),
@EndTime VARCHAR(20)
AS
declare
@code VARCHAR(5),
@msg VARCHAR(50)
BEGIN
select @code=dbo.fn_http_post('http://localhost:8080/select?StartTime='+
@StartTime+'&EndTime='+@EndTime,'','application/json','application/json');
if @code='1'
BEGIN
select * from oa_zyy_journalRpt;
end
else
BEGIN
select @msg='獲取日報失敗!';
end
END
4、接口Controller
package com.kq.controller;
import java.util.Map;
import javax.servlet.http.HttpServletResponse;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import com.kq.service.OAZYYService;
/**
*@author
*@date 2020-06-05 13:52:14
*/
@RestController
@RequestMapping(method=RequestMethod.POST,produces = "application/json;charset=UTF-8")
public class OAZYYController {
@Autowired
private OAZYYService oas;
@RequestMapping(value="/select")
public String select(@RequestParam Map<String, String>request,HttpServletResponse response) {
System.out.println(request.get("StartTime")+request.get("EndTime"));
return oas.journalRpt(request);
}
}
原文鏈接:https://blog.csdn.net/csh_on_route/article/details/106573057
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-11-16 Python中使用__hash__和__eq__方法的問題_python
- 2022-04-05 availableProcessors is already set to [8], rejecti
- 2023-06-05 Python?numpy有哪些常用數據類型_python
- 2022-09-23 基于React路由跳轉的幾種方式_React
- 2021-12-06 c#二叉樹存儲介紹_C#教程
- 2022-11-29 redis命令行操作庫、鍵、和五大數據類型詳解
- 2022-07-28 C++圖文并茂講解繼承_C 語言
- 2022-10-02 C#使用is、as關鍵字以及顯式強轉實現引用類型轉換_C#教程
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支