SQL存储过程来调用webservice
完整的webservice代碼:(也是默認的,新建.asmx文件的時候就有的:)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Services;namespace webservice {/// <summary>/// service 的摘要說明/// </summary>[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)][System.ComponentModel.ToolboxItem(false)]// 若要允許使用 ASP.NET AJAX 從腳本中調(diào)用此 Web 服務(wù),請取消注釋以下行。 //[System.Web.Script.Services.ScriptService]public class service : System.Web.Services.WebService{[WebMethod]public string HelloWorld(){return "Hello World";}} } View Codehttp://localhost:44786/service.asmx
具體的頁面(路徑:http://localhost:44786/service.asmx/HelloWorld)
好吧·默認的一個服務(wù)就是的...下面開始講下重點...如果用存儲過程來調(diào)用這個服務(wù)...
1 USE [master] 2 GO 3 /****** Object: StoredProcedure [dbo].[U_CallWebService] Script Date: 11/04/2016 09:57:35 ******/ 4 SET ANSI_NULLS ON 5 GO 6 SET QUOTED_IDENTIFIER ON 7 GO 8 Create PROCEDURE [dbo].[U_CallWebService] 9 @parameter varchar(200)--這個現(xiàn)在用不到,以后如果需要參數(shù)的話需要的.... 10 AS 11 BEGIN 12 DECLARE @OBJ INT 13 DECLARE @URL VARCHAR(500) 14 DECLARE @RESPONSE VARCHAR(3000) 15 DECLARE @RET VARCHAR(1000) 16 17 SET @URL ='http://localhost:44786/service.asmx/HelloWorld' 18 EXEC SP_OACREATE 'MSXML2.ServerXMLHttp',@OBJ OUT 19 EXEC SP_OAMETHOD @OBJ,'Open',NULL,'post',@URL,FALSE 20 EXEC SP_OAMETHOD @OBJ,'send' 21 --@RET : 0(成功)或非零數(shù)字(失敗),是由 OLE 自動化對象返回的 HRESULT 整數(shù)值。 22 EXEC @RET = SP_OAGETPROPERTY @OBJ,'responseText',@RESPONSE OUT 23 IF @RET <> 0 24 BEGIN 25 EXEC sp_OAGetErrorInfo @OBJ 26 END 27 select @RET AS 'ret(0即成功)' 28 --原本以為這個[d]是返回數(shù)據(jù)中的一個值(例如這樣{"d":"Hello World"}),是必須寫[d]的 29 --正確的解釋是:這個[d]是SELECT 的一個列名,和SELECT GETDATE() AS TIME 中的TIME是一樣性質(zhì)的.指定列名; 30 SELECT @RESPONSE--這個是(無列名) 31 SELECT @RESPONSE[d] 32 SELECT @RESPONSE AS 'd'--SELECT @RESPONSE[d] 等于SELECT @RESPONSE AS 'd' 33 --釋放、銷毀 34 EXEC SP_OADESTROY @OBJ 35 36 END 存儲過程調(diào)用webservice在運行下就可以看到效果了...
?
不足之處:
0001.<code>EXEC @RET = SP_OAGETPROPERTY @OBJ,'responseText',@RESPONSE OUT</code>
'responseText'即屬性值,如果不知道會報錯:
Error?? ? Source?? ? Description?? ? HelpFile?? ?HelpID
0x80020006?? ?ODSOLE Extended Procedure?? ? 未知名稱。?? ? NULL?? ???? 0
<我調(diào)用WCF的時候,調(diào)試都可以看到確實運行我的本地WCF的一個服務(wù)了,但是這個返回值因為不知道屬性名獲取不到!>
?
0010.貌似字符超過8000就會報錯...還是4000?總之不能太長...
?
擴展:
至今還不知道調(diào)用WCF的那個屬性值是什么!!!
望有搞過這塊的不吝(Lin)賜教...
?
附:
微軟關(guān)于錯誤的解決辦法(都是English):https://support.microsoft.com/en-us/kb/325492
?
轉(zhuǎn)載于:https://www.cnblogs.com/love-zf/p/6029437.html
總結(jié)
以上是生活随笔為你收集整理的SQL存储过程来调用webservice的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL的刷脏页策略
- 下一篇: URL、域名、子域名、主机名