平台服務資訊 |
| 服務註冊數:80 |
| 服務引用數:288 |
|
|
服務狀態 |
| 上線服務:66 |
| 離線服務:14 |
|
|
|
|
服務引用範例
說明
一般連線範例程式下載
C#版本
VB版本
安全連線範例程式下載
C#版本
VB版本
服務引用範例提供水利署內部同仁及委辦計畫廠商能夠進一步瞭解如何引用已註冊在 WRISP 平台上的服務
準備動作
在撰寫程式碼前,您必需先在 WRISP 目錄服務上查詢您所需要的服務,
在目錄服務中提供承辦人員可以線上申請服務使用,
在平台管理員或服務管理員審核通過後就會被授予權限使用服務
WRISP服務模組
認證及授權模組服務(http://wrisp.wra.gov.tw/cp/WRISP2AAMediator.asmx)
在呼叫使用WRISP平台服務前,必需先進行認證及授權程序,確認使用者或應用系統的身份後,
再進一步檢核是否擁有存取服務的權限,以確保資料安全
認證介面:LoginHandler(string account, string password) 回傳:token1
授權介面:AuthHandler(string token1, string ServiceId) 回傳:token2
服務入口模組服務(http://wrisp.wra.gov.tw/cp/WRISP2OMMediator.asmx)
為了提供平台記錄及追蹤訊息的傳遞情形,必需先透過服務入口模組取得一組電子案號,做為服務訊息傳遞過程的識別碼
電子案號介面:GetTicketNo(string serviceId, string userId) 回傳:電子案號
服務整合模組服務(http://wrisp.wra.gov.tw/cp/WRISP2SIMediator.asmx)
執行平台服務,呼叫後平台會將訊息轉送至服務提供端執行,經由平台的管控可以有效掌握服務的運行狀態
電子案號介面:TIRequestHandler(string serviceId, string requestXML, string token2) 回傳:執行結果
服務使用步驟
應用系統認證:確認應用系統身份
應用系統授權:確認應用系統是否有使用服務的權限
取得電子案號:取得電子案號做為訊息傳遞及追蹤使用
呼叫服務:執行服務呼叫,取得執行結果
一般連線與安全連線
如選擇使用安全模式進行連線,程式會在資料傳遞過程中進行資料加密傳輸,
以確保帳號密碼與回傳資料的安全性
範例程式
在WebForm上配置需要的 Textbox 及 Button,採用逐步方式說明 WRISP 平台各服務模組運作情形,WebForm配置如下圖所示:
一般連線範例程式程式碼(C#):
1 using System;
2 using System.Configuration;
3 using System.Data;
4 using System.Linq;
5 using System.Web;
6 using System.Web.Security;
7 using System.Web.UI;
8 using System.Web.UI.HtmlControls;
9 using System.Web.UI.WebControls;
10 using System.Web.UI.WebControls.WebParts;
11 using System.Xml.Linq;
12 using System.Xml;
13 using System.Text;
14
15 public partial class _Default : System.Web.UI.Page
16 {
17 protected void Page_Load(object sender, EventArgs e)
18 {
19 if (!IsPostBack)
20 {
21 //應用系統識別碼,格式:"AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE"
22 string account = "";
23 //應用系統密碼
24 string password = "";
25 //服務識別碼,格式:"AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE"
26 string serviceid = "";
27 //服務呼叫的XML字串,格式:
28 //"<WRISPRequest><標籤一>字串一</標籤一><標籤二>字串二</標籤二>。。。</WRISPRequest>"
29 string requestXML = "<WRISPRequest><PublishID></PublishID></WRISPRequest>";
30
31 txtApplicationID.Text = account;
32 txtApplicationPassword.Text = password;
33 txtServiceID.Text = serviceid;
34 txtRequest.Text = requestXML;
35 txtRequestXML.Text =
36 getReqeustXML(txtTicketNo.Text, txtServiceID.Text, txtApplicationID.Text, txtRequest.Text);
37 }
38 }
39
40 /// <summary>
41 /// 產生呼叫參數字串
42 /// </summary>
43 /// <returns></returns>
44 private string getReqeustXML(string ticketNo, string serviceID, string applicationID, string XML)
45 {
46
47 StringBuilder sb = new StringBuilder();
48
49 sb.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
50 sb.Append("<WRISPReq xmlns=\"http://isp.wra.gov.tw/cp/cpsp_definition\">");
51 sb.Append("<WRISP_UserInfo>");
52 sb.Append("<Name>水資源資訊服務平台</Name>");
53 sb.Append(string.Format("<UID>{0}</UID>", applicationID));
54 sb.Append(string.Format("<TicketNO>{0}</TicketNO>", ticketNo));
55 sb.Append("</WRISP_UserInfo>");
56
57 sb.Append("<WRISP_AP_ServiceReq>");
58 sb.Append("<Header>");
59 sb.Append(string.Format("<ServiceID>{0}</ServiceID>", serviceID));
60 sb.Append("<ServiceName>服務測試</ServiceName>");
61 sb.Append(string.Format("<TicketNo>{0}</TicketNo>", ticketNo));
62 sb.Append("</Header>");
63
64 sb.Append("<Body>");
65 sb.Append("<WI:ServiceRecord xmlns:WI=\"http://isp.wra.gov.tw/ws_definition\">");
66 sb.Append("<WI:QueryRequest>");
67 sb.Append(XML);
68 sb.Append("</WI:QueryRequest>");
69 sb.Append("</WI:ServiceRecord>");
70 sb.Append("</Body>");
71 sb.Append("</WRISP_AP_ServiceReq>");
72 sb.Append("</WRISPReq>");
73
74 return sb.ToString();
75 }
76
77 /// <summary>
78 /// 取得資料
79 /// </summary>
80 /// <param name="xmlString"></param>
81 /// <param name="Xpath"></param>
82 /// <returns></returns>
83 private string getXMLTag(string xmlString, string Xpath)
84 {
85 XmlDocument xmlDoc = new XmlDocument();
86 xmlDoc.LoadXml(xmlString);
87 return xmlDoc.SelectSingleNode("/AuthenticationToken/Token1").InnerText;
88 }
89
90 protected void btnAuthentication_Click(object sender, EventArgs e)
91 {
92 WRISP2AAMediator pAA =
93 new WRISP2AAMediator("http://wrisp.wra.gov.tw/cp/WRISP2AAMediator.asmx");
94 ////取得認證Token
95 txtToken1.Text = pAA.LoginHandler(txtApplicationID.Text, txtApplicationPassword.Text);
96 }
97
98 protected void btnAuthorization_Click(object sender, EventArgs e)
99 {
100 WRISP2AAMediator pAA =
101 new WRISP2AAMediator("http://wrisp.wra.gov.tw/cp/WRISP2AAMediator.asmx");
102 //////取得授權Token
103 string token1 = getXMLTag(txtToken1.Text , "/AuthenticationToken/Token1");
104 txtToken2.Text = pAA.AuthHandler(token1, txtServiceID.Text);
105 }
106
107 protected void btnStep2_Click(object sender, EventArgs e)
108 {
109 WRISP2OMMediator pOM =
110 new WRISP2OMMediator("http://wrisp.wra.gov.tw/cp/WRISP2OMMediator.asmx");
111 ////取得電子案號
112 txtTicketNo.Text = pOM.GetTicketNo(txtServiceID.Text, txtApplicationID.Text);
113 txtRequestXML.Text =
114 getReqeustXML(txtTicketNo.Text, txtServiceID.Text, txtApplicationID.Text, txtRequest.Text);
115 }
116
117 protected void btnInvoke_Click(object sender, EventArgs e)
118 {
119 WRISP2SIMediator pSI =
120 new WRISP2SIMediator("http://wrisp.wra.gov.tw/cp/WRISP2SIMediator.asmx");
121 ////呼叫服務
122 txtResponse.Text =
123 pSI.TIRequestHandler(txtServiceID.Text, txtRequestXML.Text, txtToken2.Text);
124 }
125 }
安全連線範例程式程式碼(C#):
1 using System;
2 using System.Configuration;
3 using System.Data;
4 using System.Linq;
5 using System.Web;
6 using System.Web.Security;
7 using System.Web.UI;
8 using System.Web.UI.HtmlControls;
9 using System.Web.UI.WebControls;
10 using System.Web.UI.WebControls.WebParts;
11 using System.Xml.Linq;
12 using System.Xml;
13 using System.Text;
14 using Microsoft.Web.Services3.Design;
15 using GISFCU.WRISP.WebService.SecurityAssertion;
16 using GISFCU.WRISP.WebService;
17
18 public partial class _Default : System.Web.UI.Page
19 {
20 protected void Page_Load(object sender, EventArgs e)
21 {
22 if (!IsPostBack)
23 {
24 //應用系統識別碼,格式:"AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE"
25 string account = "";
26 //應用系統密碼
27 string password = "";
28 //服務識別碼,格式:"AAAAAAAA-BBBB-CCCC-DDDD-EEEEEEEEEEEE"
29 string serviceid = "";
30 //服務呼叫的XML字串,格式:
31 //"<WRISPRequest><標籤一>字串一</標籤一><標籤二>字串二</標籤二>。。。</WRISPRequest>"
32 string requestXML = "<WRISPRequest><PublishID></PublishID></WRISPRequest>";
33
34 txtApplicationID.Text = account;
35 txtApplicationPassword.Text = password;
36 txtServiceID.Text = serviceid;
37 txtRequest.Text = requestXML;
38 txtRequestXML.Text =
39 getReqeustXML(txtTicketNo.Text, txtServiceID.Text, txtApplicationID.Text, txtRequest.Text);
40 }
41 }
42
43 /// <summary>
44 /// 產生呼叫參數字串
45 /// </summary>
46 /// <returns></returns>
47 private string getReqeustXML(string ticketNo, string serviceID, string applicationID, string XML)
48 {
49
50 StringBuilder sb = new StringBuilder();
51
52 sb.Append("<?xml version=\"1.0\" encoding=\"utf-8\"?>");
53 sb.Append("<WRISPReq xmlns=\"http://isp.wra.gov.tw/cp/cpsp_definition\">");
54 sb.Append("<WRISP_UserInfo>");
55 sb.Append("<Name>水資源資訊服務平台</Name>");
56 sb.Append(string.Format("<UID>{0}</UID>", applicationID));
57 sb.Append(string.Format("<TicketNO>{0}</TicketNO>", ticketNo));
58 sb.Append("</WRISP_UserInfo>");
59
60 sb.Append("<WRISP_AP_ServiceReq>");
61 sb.Append("<Header>");
62 sb.Append(string.Format("<ServiceID>{0}</ServiceID>", serviceID));
63 sb.Append("<ServiceName>服務測試</ServiceName>");
64 sb.Append(string.Format("<TicketNo>{0}</TicketNo>", ticketNo));
65 sb.Append("</Header>");
66
67 sb.Append("<Body>");
68 sb.Append("<WI:ServiceRecord xmlns:WI=\"http://isp.wra.gov.tw/ws_definition\">");
69 sb.Append("<WI:QueryRequest>");
70 sb.Append(XML);
71 sb.Append("</WI:QueryRequest>");
72 sb.Append("</WI:ServiceRecord>");
73 sb.Append("</Body>");
74 sb.Append("</WRISP_AP_ServiceReq>");
75 sb.Append("</WRISPReq>");
76
77 return sb.ToString();
78 }
79
80 /// <summary>
81 /// 取得資料
82 /// </summary>
83 /// <param name="xmlString"></param>
84 /// <param name="Xpath"></param>
85 /// <returns></returns>
86 private string getXMLTag(string xmlString, string Xpath)
87 {
88 XmlDocument xmlDoc = new XmlDocument();
89 xmlDoc.LoadXml(xmlString);
90 return xmlDoc.SelectSingleNode("/AuthenticationToken/Token1").InnerText;
91 }
92
93 protected void btnAuthentication_Click(object sender, EventArgs e)
94 {
95 WRISP2AAMediator pAA =
96 new WRISP2AAMediator("http://wrisp.wra.gov.tw/cpSecurity/WRISP2AAMediator.asmx");
97 // create policy
98 Policy policy = new Policy();
99 policy.Assertions.Add(new ServerAssertion());
100 policy.Assertions.Add(new UsernameClientAssertion("admin", "nimda")); //使用 Reverse
101
102 // and set it to web service
103 pAA.SetPolicy(policy);
104
105 ////取得認證Token
106 txtToken1.Text = pAA.LoginHandler(txtApplicationID.Text, txtApplicationPassword.Text);
107 }
108
109 protected void btnAuthorization_Click(object sender, EventArgs e)
110 {
111 WRISP2AAMediator pAA =
112 new WRISP2AAMediator("http://wrisp.wra.gov.tw/cpSecurity/WRISP2AAMediator.asmx");
113
114 // create policy
115 Policy policy = new Policy();
116 policy.Assertions.Add(new ServerAssertion());
117 policy.Assertions.Add(new UsernameClientAssertion("admin", "nimda")); //使用 Reverse
118
119 // and set it to web service
120 pAA.SetPolicy(policy);
121
122
123 //////取得授權Token
124 string token1 = getXMLTag(txtToken1.Text , "/AuthenticationToken/Token1");
125 txtToken2.Text = pAA.AuthHandler(token1, txtServiceID.Text);
126 }
127
128 protected void btnStep2_Click(object sender, EventArgs e)
129 {
130 WRISP2OMMediator pOM =
131 new WRISP2OMMediator("http://wrisp.wra.gov.tw/cpSecurity/WRISP2OMMediator.asmx");
132
133 // create policy
134 Policy policy = new Policy();
135 policy.Assertions.Add(new ServerAssertion());
136 policy.Assertions.Add(new UsernameClientAssertion("admin", "nimda")); //使用 Reverse
137
138 // and set it to web service
139 pOM.SetPolicy(policy);
140
141 ////取得電子案號
142 txtTicketNo.Text = pOM.GetTicketNo(txtServiceID.Text, txtApplicationID.Text);
143 txtRequestXML.Text =
144 getReqeustXML(txtTicketNo.Text, txtServiceID.Text, txtApplicationID.Text, txtRequest.Text);
145 }
146
147 protected void btnInvoke_Click(object sender, EventArgs e)
148 {
149 WRISP2SIMediator pSI =
150 new WRISP2SIMediator("http://wrisp.wra.gov.tw/cpSecurity/WRISP2SIMediator.asmx");
151 // create policy
152 Policy policy = new Policy();
153 policy.Assertions.Add(new ServerAssertion());
154 policy.Assertions.Add(new UsernameClientAssertion("admin", "nimda")); //使用 Reverse
155
156 // and set it to web service
157 pSI.SetPolicy(policy);
158
159 ////呼叫服務
160 txtResponse.Text = pSI.TIRequestHandler(txtServiceID.Text, txtRequestXML.Text, txtToken2.Text);
161 }
162 }
|