Sql server 在不使用CLR的情况下从SQL调用WCF服务
是否可以在不使用CLR的情况下从SQL调用WCF服务?(与asmx类似) 以下代码与asmx服务完美配合,但与WCF不配合Sql server 在不使用CLR的情况下从SQL调用WCF服务,sql-server,web-services,wcf,Sql Server,Web Services,Wcf,是否可以在不使用CLR的情况下从SQL调用WCF服务?(与asmx类似) 以下代码与asmx服务完美配合,但与WCF不配合 --INTERNAL PARAMETERS DECLARE @Object AS INT DECLARE @ResponseText AS VARCHAR(8000) DECLARE @SiteURL AS VARCHAR(100) = fGetSiteUrl() --BUILD SERVICE URL DECLARE @S
--INTERNAL PARAMETERS
DECLARE @Object AS INT
DECLARE @ResponseText AS VARCHAR(8000)
DECLARE @SiteURL AS VARCHAR(100) = fGetSiteUrl()
--BUILD SERVICE URL
DECLARE @ServiceURL VARCHAR(MAX) = @SiteURL + '/WebServices/PortalService.asmx/CreateUser'
+ '?userName=' + @UserName
+ '&password=' + @ClearTextPassword
+ '&question=' + @PasswordQuestion
+ '&answer=' + @PasswordAnswer
+ '&email=' + @Email
--BUILD AND EXECUTE SERVICE CALL
EXEC sp_OACreate 'MSXML2.XMLHTTP', @Object OUT;
EXEC sp_OAMethod @Object, 'open', NULL, 'get',@ServiceURL, 'false'
EXEC sp_OAMethod @Object, 'send'
EXEC sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT
EXEC sp_OADestroy @Object
--STRIP OUT USELESS FLUFF
SET @ResponseText = SUBSTRING(@ResponseText, CHARINDEX('>', @ResponseText) + 1, (LEN(@ResponseText) - CHARINDEX('>', @ResponseText)))
SET @ResponseText = SUBSTRING(@ResponseText, CHARINDEX('>', @ResponseText) + 1, (LEN(@ResponseText) - CHARINDEX('>', @ResponseText)))
SET @ResponseText = CONCAT('<Result>', @ResponseText)
DECLARE @MyXML XML = @ResponseText
--GET THE USER USERID OF THE NEW USER
SET @UserId = (SELECT a.b.value('UserId[1]','nvarchar(1280)') AS UserId
FROM @MyXML.nodes('Result') a(b))
——内部参数
将@Object声明为INT
将@ResponseText声明为VARCHAR(8000)
将@SiteURL声明为VARCHAR(100)=fGetSiteUrl()
--生成服务URL
声明@ServiceURL VARCHAR(MAX)=@SiteURL+'/WebServices/PortalService.asmx/CreateUser'
+“?用户名=”+@userName
+“&password=”+@ClearTextPassword
+“&question=”+@PasswordQuestion
+“&answer=”+@PasswordAnswer
+“&email=”+@email
--构建并执行服务调用
EXEC sp_OACreate'MSXML2.XMLHTTP',@Object OUT;
EXEC sp_OAMethod@Object'open',NULL'get',@ServiceURL',false'
EXEC sp_OAMethod@Object'send'
EXEC sp_OAMethod@Object,'responseText',@responseText输出
EXEC sp_OADestroy@Object
--去掉无用的绒毛
设置@ResponseText=SUBSTRING(@ResponseText,CHARINDEX('>',@ResponseText)+1,(LEN(@ResponseText)-CHARINDEX('>',@ResponseText)))
设置@ResponseText=SUBSTRING(@ResponseText,CHARINDEX('>',@ResponseText)+1,(LEN(@ResponseText)-CHARINDEX('>',@ResponseText)))
设置@ResponseText=CONCAT(“”,@ResponseText)
声明@MyXML=@ResponseText
--获取新用户的用户USERID
将@UserId=(选择a.b.value('UserId[1],'nvarchar(1280))设置为UserId
来自@MyXML.nodes('Result')a(b))
SOAP请求只是一个HTTP请求。你可以让它工作,但你必须重建一个有效的请求。你能告诉我一个方向吗?对我来说,这是一个相当未知的领域