ms sql 2008 如何发送http post请求?急,请高手指点

hi_5461 2015-06-11 10:11:48
如题,请指导下,网上搜到的方案也试过,不好用。
...全文
698 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangkui6616 2017-05-10
  • 打赏
  • 举报
回复
------------------- 开启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 --------------------------------------------------------------- -- HTTP POST 请求 -- [测试] -- SELECT dbo.FN_HTTP_POST('http://10.7.1.47/seeyon/rest/token','{"userName":"rest","password":"123456"}','application/json','application/json'); -- DROP FUNCTION FN_HTTP_POST; CREATE FUNCTION 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 /*获取HTTP状态代码*/ EXEC @returnStatus = SP_OAGetProperty @Object, 'Status', @httpStatus OUT; IF @returnStatus <> 0 BEGIN EXEC sp_OAGetErrorInfo @Object, @errMsg OUT, @returnText OUT; RETURN ('获取HTTP状态代码失败,' + @errMsg + ISNULL(@returnText, '')); 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 ; CREATE FUNCTION FN_HTTP_GET( @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,'get',@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 /*获取HTTP状态代码*/ EXEC @returnStatus = SP_OAGetProperty @Object, 'Status', @httpStatus OUT; IF @returnStatus <> 0 BEGIN EXEC sp_OAGetErrorInfo @Object, @errMsg OUT, @returnText OUT; RETURN ('获取HTTP状态代码失败,' + @errMsg + ISNULL(@returnText, '')); 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 ; CREATE FUNCTION FN_HTTP_PUT( @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,'put',@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 /*获取HTTP状态代码*/ EXEC @returnStatus = SP_OAGetProperty @Object, 'Status', @httpStatus OUT; IF @returnStatus <> 0 BEGIN EXEC sp_OAGetErrorInfo @Object, @errMsg OUT, @returnText OUT; RETURN ('获取HTTP状态代码失败,' + @errMsg + ISNULL(@returnText, '')); 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 ;
三断笛 2016-09-22
  • 打赏
  • 举报
回复
用几个sp_OA****过程进行COM调用,调用XMLHTTP就行
「已注销」 2015-06-14
  • 打赏
  • 举报
回复
问题还没解决
「已注销」 2015-06-11
  • 打赏
  • 举报
回复
你发的文章我看了,并未提到数据库里如何发送,没有参考价值
Cherise_huang 2015-06-11
  • 打赏
  • 举报
回复

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧