怎样使用vb调用webservice?

解决方案 »

  1.   

    给你写一个示例:web Services代码(VS2005):Imports System.Web
    Imports System.Web.Services
    Imports System.Web.Services.Protocols
    Imports System.Data
    Imports System.Data.Odbc
    Imports System.Configuration.ConfigurationManager
    Imports System.Xml
    Imports ADODB<WebService(Namespace:="http://tempuri.org/")> _
    <WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
    <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
    Public Class TEST
         Inherits System.Web.Services.WebService    '读取config中的连接字符串
        Public Function cnString() As String
            Return ConnectionStrings("connToPgSql").ToString()
        End Function    'ADO记录集转换为XML
        <WebMethod()> _
        Public Function RecordsetToXmlTest(ByVal uid As String,ByVal pwd As String) As XmlDataDocument        Dim sql As String = "select uid,username,pwd from taobao.users " 'where uid='" & Uid & "' and pwd='" & Pwd & "'"
            Dim cn As New Connection
            Dim rs As New Recordset
            Dim st As New Stream
            Dim xd As New XmlDataDocument        cn.ConnectionString = cnString.ToString
            cn.Open()        rs.Open(sql, cn, CursorTypeEnum.adOpenForwardOnly, LockTypeEnum.adLockReadOnly, 1)
            rs.Save(st, PersistFormatEnum.adPersistXML)
            st.Flush()   '当在派生类中重写时,将清除该流的所有缓冲区,并使得所有缓冲数据被写入到基础设备
            st.Position = 0  '当在派生类中重写时,获取或设置当前流中的位置
            xd.LoadXml(st.ReadText(st.Size))        Return xd        st = Nothing
            rs = Nothing
            cn = Nothing
            xd = Nothing    End Function  '字符串
        <WebMethod()> _
        Public Function StrTest(ByVal s As String) As String
            Dim t As String = DateTime.Today.ToString("yyyy-MM-dd")
            t = s & "你好!今天是: " & t
            Return t
        End FunctionEnd Class
    vb代码:引用:microsoft soap type library
          microsoft xml, v6.0
          microsoft activex data objexts 2.x library
          
    Private Sub Command1_Click() 'Rs返回记录集
        
        Dim oHTTP As XMLHTTP
        Dim oXmlDoc As DOMDocument
        Dim rs As ADODB.Recordset
        Dim strWebserviceURL As String, strRequest As String
        
        strWebserviceURL = "http://localhost/BWR/TEST.asmx/RecordsetToXmlTest"
        strRequest = "uid=admin&pwd=123456"  '多个参数要用&分隔
        
        Set oHTTP = New XMLHTTP
        oHTTP.Open "POST", strWebserviceURL, False
        oHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        oHTTP.send (strRequest)
        
        Set oXmlDoc = New DOMDocument
        oXmlDoc.Load oHTTP.responseXML
        If oXmlDoc.parseError Then
            Exit Sub
        End If
        'oXmlDoc.Save (App.Path & "\rs.xml")    '以下是还原记录集,你也可以直接处理xml,
     
        Set rs = New ADODB.Recordset
        rs.Open oXmlDoc
      
        While Not rs.EOF
            Debug.Print rs("uid") & rs("username") & rs("pwd")
            rs.MoveNext
        Wend
        
        Set oHTTP = Nothing
        Set oXmlDoc = Nothing
        Set rs = Nothing
        
    End SubPrivate Sub Command2_Click()  '返回字串    Dim oSC As New SoapClient
        oSC.ClientProperty("ServerHTTPRequest") = True
        oSC.mssoapinit ("http://localhost/BWR/TEST.asmx?WSDL")
        Text1 = oSC.StrTest("admin")
        
        Set oSC = Nothing
        
    End Sub