zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    [BZOJ1415]聪聪和可可
    [POJ2096]Collecting Bugs
    开博第一天
    实现CSS样式垂直水平完全居中
    Vue中独立组件之间数据交互
    python Template中substitute()的使用
    eclipse 编辑 python 中文乱码的解决方案
    java Math.random()随机数的产生
    java文件读写的两种方式
    My way on Linux
  • 原文地址:https://www.cnblogs.com/catherinehu/p/8443751.html
Copyright © 2011-2022 走看看