SQLServer调WebService & 错误解决:请求格式无法识别

(sqlServer 2008 + VS2010)

首先,对服务器进行配置。

sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO

然后实现SQL调用WebService接口,代码如下:

DECLARE @ServiceUrl AS NVARCHAR(1000)
DECLARE @UrlAddress VARCHAR(500)
--------WebService地址:以http开头,结尾带斜杠,
--例如'http://www.webxml.com.cn/webservices/qqOnlineWebService.asmx/' 
SET @UrlAddress ='--地址--'

DECLARE @FunName VARCHAR(50)
--- WebService中调用的方法名:例如‘HelloWorld’
SET @FunName='Add'

--- 以下参数对应WebService中参数的[参数名]
DECLARE @p1 VARCHAR(800),@p2 VARCHAR(100),@p3 VARCHAR(100)
SET @p1='a'
SET @p2='b'
SET @p3='c'
--- 以下参数对应WebService中参数的[参数值]
DECLARE @p1_Value VARCHAR(100),@p2_Value VARCHAR(100),@p3_Value VARCHAR(100)
SET @p1_Value = '1'
SET @p2_Value = '2'
SET @p3_Value = '3'

SET @ServiceUrl=@UrlAddress+@FunName+'?'
+@p1+'='+@p1_Value+'&'+@p2+'='+@p2_Value+'&'+@p3+'='+@p3_Value

--- 创建 OLE 对象的实例。
--- 返回的对象令牌必须是数据类型为 int 的局部变量。 该对象令牌用于标识所创建的 OLE 对象,并用于调用其他 OLE 自动化存储过程。
DECLARE @Object AS INT
DECLARE @ResponseText AS VARCHAR(8000)

EXEC sys.sp_OACreate 'MSXML2.XMLHTTP',@Object OUT;
EXEC sys.sp_OAMethod @Object,'open',NULL,'get',@ServiceUrl,'false'
EXEC sys.sp_OAMethod @Object,'send'
EXEC sys.sp_OAMethod @Object,'responseText',@ResponseText OUTPUT

SELECT @ResponseText

--- 当不再需要该对象时,调用 sp_OADestroy 释放使用 sp_OACreate 创建的对象实例。
EXEC sys.sp_OADestroy @Object

GO
View Code

此上可参见:https://www.cnblogs.com/davidhou/p/5868136.html

本例中使用的WebService方法 Add:

[WebMethod(Description = "Add —— 测试方法")]
public int Add(int a, int b, int c)
{
    return a + b + c;
}

调用时遇到的问题:在SQL中报错:请求格式无法识别。

解决方法:在Web.config System.Web节点下添加如下内容

<webServices>
    <protocols>
        <add name="HttpPost"/>
        <add name="HttpGet"/>
    </protocols>
</webServices>
原文地址:https://www.cnblogs.com/catherinehu/p/8443751.html