http://www.pconline.com.cn/pcedu/empolder/net/0405/381852.html 作者:guoyan19811021
Web Services技术使异种计算环境之间可以共享数据和通信,达到信息的一致性。
我们可以利用HTTP POST/GET协议、SOAP协议来调用Web Services。
一、 利用SOAP协议在VB6中调用Web Services;
首先利用.net发布一个简单的Web Services
<WebMethod()> _ Public Function getString(ByVal str As String) As String Return "Hello World, " & str & "!" End Function |
该Web Services只包含一个getString方法,用于返回一个字符串。当我们调用这个Web Services时,发送给.asmx页面的SOAP消息为:
<?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:Body> <getString xmlns="http://tempuri.org/TestWebService/Service1"> <str>string</str> </getString> </soap:Body> </soap:Envelope> |
而返回的SOAP消息为:
<?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:Body> <getStringResponse xmlns="http://tempuri.org/TestWebService/Service1"> <getStringResult>string</getStringResult> </getStringResponse> </soap:Body> </soap:Envelope> |
; 在VB6中调用这个简单的Web Services可以利用利用XMLHTTP协议向.asmx页面发 送SOAP来实现。
在VB6中,建立一个简单的工程,界面如图,我们通过点击Button来调用这个简单的Web Services
Dim strxml As String Dim str As String str = Text2.Text '定义soap消息 strxml = "<?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:Body><getString xmlns='http://tempuri.org/TestWebService/Service1'><str>" & str & "</str></getString></soap:Body></soap:Envelope>" |
'定义一个http对象,一边向服务器发送post消息 Dim h As MSXML2.ServerXMLHTTP40 '定义一个XML的文档对象,将手写的或者接受的XML内容转换成XML对象 Dim x As MSXML2.DOMDocument40 '初始化XML对象 Set x = New MSXML2.DOMDocument40 '将手写的SOAP字符串转换为XML对象 x.loadXML strxml |
'初始化http对象 Set h = New MSXML2.ServerXMLHTTP40 '向指定的URL发送Post消息 h.open "POST", "http://localhost/TestWebService/Service1.asmx", False h.setRequestHeader "Content-Type", "text/xml" h.send (strxml) While h.readyState <> 4 Wend '显示返回的XML信息 Text1.Text = h.responseText '将返回的XML信息解析并且显示返回值 Set x = New MSXML2.DOMDocument40 x.loadXML Text1.Text Text1.Text = x.childNodes(1).Text |
我们在TEXTBOX中输入“中国”,再点击BUTTON,于是就可以在下边的TEXTBOX中显示“Hello World, 中国” 。显示如图: