Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在不使用CLR的情况下从SQL调用WCF服务_Sql Server_Web Services_Wcf - Fatal编程技术网

Sql server 在不使用CLR的情况下从SQL调用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

是否可以在不使用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 @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请求。你可以让它工作,但你必须重建一个有效的请求。你能告诉我一个方向吗?对我来说,这是一个相当未知的领域