用WebService编写接口,那怎么用vb调用WebService

解决方案 »

  1.   

    你要不用Soap Toolkit(简单,但需要到微软下载),要不用xmlhttp来直接发送调用webservice的soap消息。
      

  2.   

    msxml带的一个与http相关的库。加上到msxml的参考就可以用了
    dim ohttp as new MSXML2.XMLHTTP
    ...
    具体做法可以参见:http://builder.com.com/5100-6389-1050036.html
      

  3.   

    soap toolkit怎么用的!谢谢
      

  4.   

    自己google呀,不就是调用库吗:
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dndotnet/html/migrsoapwebserv.asp
      

  5.   

    http://community.csdn.net/Expert/topic/3797/3797112.xml?temp=.3394129http://www.gbnis.com/read_file.php?id=2069&left=net_programe参考一下//****服务器端*******
    Service1.asmx里包含下面两个WEBMETHOD
    [WebMethod]
    public DataSet GetMyProductsDataSet(int userID)//被调用时将返回DATASET序列的XML,此XML主要用于ADO.NET
    {
    string sql;
    DataSet ds2=new DataSet();
    sql = "select userid,productname from StockIC where UserID="+userID;
    my_adapter = new SqlDataAdapter(sql,this.sqlConnection1);
    my_adapter.Fill(ds2,"Stock");
    return ds2;
    }[WebMethod]
    //被调用时将返回ADO.Recodset序列的XML
    public System.Xml.XmlDocument GetMyProductsRecordSet(int userID),此XML主要用于ADO
    {
    string sql;
    ADODB.Recordset rs=new ADODB.Recordset();
    ADODB.Stream st=new ADODB.Stream();
    System.Xml.XmlDocument xd=new System.Xml.XmlDocument();
    sql = "select userid,productname from StockIC where UserID="+userID;
    rs.Open(sql,this.sqlConnection3,ADODB.CursorTypeEnum.adOpenForwardOnly,ADODB.LockTypeEnum.adLockReadOnly, 1);
    rs.Save(st,ADODB.PersistFormatEnum.adPersistXML);
    st.Flush();
    st.Position=0;
    xd.LoadXml(st.ReadText(st.Size));
    return xd;
    }'****客户端*******
    'XMLHTTP调用并装载到ADO.RECORDSET分析(简单方便),可以直接由XMLDOM来分析Set objHTTP = Server.CreateObject("MSXML2.XMLHTTP.4.0")
    Set objXmlDoc =Server.CreateObject("MSXML2.DOMDocument.3.0")
    strWebserviceURL = "http://192.168.1.88/Service1.asmx/GetMyProductsRecordSet"
    strRequest = "userID=43"
    objHTTP.Open "post", strWebserviceURL, False
    objHTTP.SetRequestHeader "Content-Type", "application/x-www-form-urlencoded"
    objHTTP.Send(strRequest)
    objXmlDoc.load objHTTP.responseXML
    set rs=server.CreateObject("adodb.recordset")
    rs.Open objXmlDoc'必须是ADO.Recodset序列的XML,如果上面http://192.168.1.88/Service1.asmx调用的方法GetMyProductsRecordSet改成GetMyProductsDataSet将报错
    if rs is nothing then response.Write "rsisnothing"
    if rs.EOF then
    response.Write "rs.EOF"
    else
    while not rs.EOF 
    response.Write rs(0) & "<br/>"
    rs.MoveNext
    wend
    end if
    set objXmlHttp=nothing
    set objXmlDoc=nothing
    set rs=nothing
      

  6.   

    在VB中测试 
    这个就要相对来说复杂一些 
    首先在vb中建立一个”标准EXE”的工程。添加引用:Microsoft  Soap  Type  library。注意:如果没有安装Microsoft  Soap  Toolkit,是没有这个类型库的。 
    可以在http://www.ourfly.com中下载。 
    添加一个text 
    Private  Sub  Form_Load() 
            Text1.Text  =  add() 
    End  Sub Public  Function  Add()  As  String 
    Dim  objSoapClient  As  New  SoapClient 
            objSoapClient.ClientProperty("ServerHTTPRequest")  =  True 
    Call  objSoapClient.mssoapinit("http://localhost/webserver/service1.asmx?WSDL",  "Service1",  "Service1Soap") 
    这句也可以 
    objSoapClient.mssoapinit("http://localhost/webserver/service1.asmx?WSDL")         Add  =  objSoapClient.Show("龙卷风.NET") 
    End  Function 调试成功需要注意的: 
    运行服务端webservice的程序,出现下面时 
    支持下列操作。有关正式定义,请查看服务说明。 
    点击服务说明,会得到完整的wsdl文件 
    http://localhost/webserver/Service1.asmx?WSDL 
    我们就要使用这个文件,其中包含了我们定义的方法等等。 Mssoapinit(bstrWSDLFile  as  string,[bStrServiceName  as  string  ],[bStrport  as  string  ]  ,[bstrWSMLDile  as  string])的用法: 
    其中第二个,第三个参数在wsdl文件中可以找到。也可以省略。 
      

  7.   

    可是传回来的dataset在vb中用什么来接受啊.vb有datatable之类的东东吗???