Web Service界接-如何通過Web Service帳號驗證並取得資料

寫在前面:
1.本測試使用前文架設之Web Service,request抽水站名稱,response抽水站地址,且要通過帳號驗證
2.開發工具使用VS2008
3.本文重點在於如何傳遞帳號並通過驗證,並進一步呼叫WebMethod取回data
4.以一般網頁介面,予user直接輸入資訊進行測試

SETP 1:新增一ASP .NET  Web應用程式
新增專案

專案初始狀態 


SETP 2:加入Web參考
在'URL'中輸入服務所在網址,按下'移至'搜尋服務,搜尋完畢後賦予其Web 參考名稱Hello(預設為localhost),最後按下'加入參考'完成網路服務的include!
引入後續採用之服務

加入參考後的專案結構


SETP 3:觀察SOAP包裝的request
POST /ws/soapheader/service1.asmx HTTP/1.1
Host: localhost Content-Type: text/xml; charset=utf-8 Content-Length: length SOAPAction: "http://tempuri.org/HelloWorld" < ?xml version="1.0" encoding="utf-8"?> < soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
< soap:Header> < HeoSoapHeader xmlns="http://tempuri.org/">
< userid>string< /userid>
< password>string< /password>
< /HeoSoapHeader>
< /soap:Header>
< soap:Body>
< HelloWorld xmlns="http://tempuri.org/">
< pumpName>string
< /pumpName>
< /HelloWorld> < /soap:Body>
< /soap:Envelope>
由上可知我們必須傳第3項資訊,userid(帳號)、password(密碼)、pumpName(抽水站名稱)


SETP 4:設計網頁
[
[網頁設計說明]
三個TextBox讓user輸入帳號密碼以及抽水站名稱
call HelloWorld按鈕(Button1)可叫用Hello服務
Label1呈現服務回傳結果


SETP 5:撰寫Button1_Click事件,以叫用服務
protected void Button1_Click(object sender, EventArgs e)
{
  Hello.HeoSoapHeader MyHeader = new Hello.HeoSoapHeader();
  Hello.Service1 MyWebServ=new Hello.Service1() ;
  MyHeader.userid = TextBox1.Text ;
  MyHeader.password = TextBox2.Text;
  MyHeader.MustUnderstand = true;
  MyWebServ.HeoSoapHeaderValue = MyHeader;
  string queryResult = MyWebServ.HelloWorld(TextBox3.Text);
  Label1.Text = queryResult;
}


SETP 6:測試
成功取回抽水站地址


-----------------------------本文目標已達成---------------------
閱讀前言附有權限之Web Service以及本文這一系列文章,可以清楚明白Web Service界接之原理與應用,但目前測試環境全都部署在本機端,之後將再以另篇專文說明,如何處理Web SErvice跨網域之代理伺服器設置。

沒有留言: