SQLServer 調用 WebAPI [WSDL]

 

某陌習慣調用ASMX文件,開發語言最近比較常用C#

結果這次合作的同事習慣用Python,還強調只會用REST風格的WebService

某陌心想這不是WebAPI嗎?趕緊學習……

正式引入WebAPI之前先簡單說明一下 RESTful 风格的地址

示例(和我之前常用的.asmx文件略有不同,不以.asmx結尾):

https://blog.csdn.net/sinat_28782331

SoapUI執行效果就是某陌博客的主頁。

不過這個也不影響啦~沒必要一定讓python開發的API轉化成ASMX格式,SQL其實也是可以調用這種網址的,就算放在Anaconda 上的 WebService 也是不受影響的。

這里簡單寫了一個Demo:

Python代碼如下

from flask import Flask, request, render_template

 

app = Flask(__name__)

 

@app.route('/loginurl', methods=['GET', 'POST'])

def login():

    #  利用request取得使用者端傳來的方法為何

    if request.method == 'POST':

                          #  利用request取得表單欄位值

        return 'Hello ' + request.values['username']

    

    #  非POST的時候就會回傳一個空白的模板

   return render_template('login.html')

 

if __name__ == '__main__':

    app.debug = True

    app.run()  

 

login.html代碼如下

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <title>Hello Page</title>

</head>

<body>

    <form method='post' action={{ url_for('login') }}>

        <p>

        <input type='text' name='username' />

    </p>

        <p>

        <button type='submit'>Submit</button>

    </p>

    </form>

</body>

</html>

由上可知:GET返回的是默認的login.html

Declare @Object as Int
Declare @ResponseText as nvarchar(4000)
Declare @ServiceUrl varchar(max)='http://10.4.97.211:82/loginurl' --url自定義
EXEC sp_OACreate 'MSXML2.XMLHTTP', @Object OUT; --創建OLE元件物件
Exec sp_OAMethod @Object, 'open', NULL, 'get',@ServiceUrl,'false' --打開連結,注意是get還是post 
EXEC sys.sp_OAMethod @object,'setRequestHeader',NULL,'Content-Type','application/x-www-form-urlencoded;charset=UTF-8'
Exec sp_OAMethod @Object, 'send',NULL
EXEC sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT --輸出參數
Select @ResponseText      --輸出結果
Exec sp_OADestroy @Object

返回結果:

#  非POST的時候就會回傳一個空白的模板
<!DOCTYPE html> 
<html lang="en"> 
<head>     
<meta charset="UTF-8">     
<title>Hello Page</title> 
</head> 
<body>     
<form method='post' action=/loginurl>         
<p>         
<input type='text' name='username' />     
</p>         
<p>         
<button type='submit'>Submit</button>     
</p>     
</form> 
</body> 
</html> 

POST返回 hello + username

Declare @Object as Int
Declare @ResponseText as nvarchar(4000)
Declare @ServiceUrl varchar(max)='http://10.4.97.211:82/loginurl' --url自定義
Declare @RequestText as varchar(8000);
set @RequestText='username=123' --此處值參如果有多個,用&分隔,例 username=123&password=123
EXEC sp_OACreate 'MSXML2.XMLHTTP.3.0', @Object OUT; --創建OLE元件物件
Exec sp_OAMethod @Object, 'open', NULL, 'POST',@ServiceUrl,'false' --打開連結,注意是get還是post 
EXEC sys.sp_OAMethod @object,'setRequestHeader',NULL,'Content-Type','application/x-www-form-urlencoded'
--EXEC sp_OAMethod @object, 'setRequestHeader', null, 'SOAPAction', 'login'
Exec sp_OAMethod @Object, 'send',NULL,@RequestText
EXEC sp_OAMethod @Object, 'responseText', @ResponseText OUTPUT --輸出參數
--EXEC SP_OAGETERRORINFO @OBJECT
Select @ResponseText      --輸出結果
Exec sp_OADestroy @Object

返回結果:Hello 123

參考資料:

soapUI使用教程

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值