在 VB 中调用 C# 写的 WebService

 用C#写的webserivce,返回一个dataset,在VB或者c 中怎么调用? 
  日期:2006-06-01 15:27:04 点击:0 评论:0 
用C#写webserivce,返回一个dataset,而在VB或者C 中没有dataset这个东西,该怎么做才能在VB或者c 中调用c#写的webserivce?


主题:请问在vb6中怎样调用web service

 

我已经安装好了soap toolkit,怎样在vb中把soap控件加进去呢?以便调用web service

Webservice中的GetTemperature方法:
Dim soap As MSSOAPLib.SoapClient
Set soap = New MSSOAPLib.SoapClient
soap.mssoapinit _
"
http://localhost/Temperature/Temperature.wsdl"
MsgBox ("气温是: " & _
soap.GetTemperature("20171", False))

上面的MSSOAPLib怎么加进去的?
谢谢了


我写了一个Web   Service方法:  
          GetEmployee(byval   employeeNo   as   string)   as   Employee  
  我在客户端和服务端Employee类的定义如下  
  Public   Class  
          Public   EmployeeNo   as   String  
          Public   EmployeeName   as   String  
  End   Class  
   
  我现在要在vb6.0客户端使用soap调用他  
   
          Set   soapClient3   =   New   MSSOAPLib30.SoapClient30  
          On   Error   GoTo   ErrorHandler  
           
          soapClient3.MSSoapInit2   App.Path   &   "/EmployeeService.wsdl",   _  
                  "",   _  
                  "EmployeeService",   _  
                  "EmployeeServiceSoap",   _  
                  "
http://tempuri.org/"  
           
          If   Err.Number   <>   0   Then  
              MsgBox   "initialization   failed   "   +   Err.Description  
          End   If  
           
          dim   employee   as   new   Employee  
          employee=soapClient3.GetEmployee("123")  
   
  系统总是提示错误:object   doesn't   support   this   property   or   method.  
  但是我使用Call   soapClient3.GetEmployee("123")系统正常。

在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

-------------------
SONP   Toolkit这里有下载:
http://download.microsoft.com/download/xml/soap/2.0/W98NT42KMe/EN-US/SoapToolkit20.exe    
  安装完成后在VB工程里引用Microsoft   SOAP   Type   Library  
   
  下面是我已经调通的一个简单例子:  
  服务端:  
  '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\  
  'Webservice   的概念是使用一个标准的输出接口来定义代码提供的功能,以便让外界可以通过这个标准的输出  
  '接口来调用,而所谓的标准输出接口就是wsdl,wsdl是一个xml组成的文件,描述了实现程序对外提供函数的  
  '原型,客户端可以通过wsdl来调用实现程序提供的服务代码。  
  '  
  '  
  '服务端代码如下:(在这个例子中服务端用java完成,客户端用VB6.0完成,服务器是tomcat5.0)  
  '  
  '首先建立服务端程序:  
  '启动JBuilder建立一个工程,设置服务器为tomcat4.0(因为JBuilder9不支持tomcat5.0,实现后将其在  
  'tomcat5.0中发布)。  
  '新建一个class   代码如下:  
  'public   class   HelloWorld{  
  '     public   String   sayHello(){  
  '         return   "Hello   world!";  
  '     }  
  '     public   String   echo(String   u){  
  '         return   "Hello   "   +   u;  
  '     }  
  '}  
  '选择File菜单New,在弹出的对话框中选择web   services页中的Web   Serivice   Configuation   Wizard,新建  
  'webapp   axis并配置servers。  
  '再次选择File菜单,New再出现的窗口中选择Export   as   a   web   service   Wizard,在弹出的向导中选择要导出  
  '的类名,其它项直接选默认值即可。  
  '运行刚才建立的程序,出现"JBuilder   Apache   Axis   Admin   Console"的页面表示刚才建立的webservice成功。  
  '点击View超级链接进入"And   now...   Some   Services"页面,点击HelloWorld(WSDL)的链接出现WSDL描述文件,  
  '至此webservice服务端建立完成。  
  '  
  '将刚才建立的webservice发布到tomcat5.0中,在tomcat的webapps目录下新建webservicetest目录,将用  
  'JBulider建立的工程目录下的   axis目录下的文件全部复制到其中,重新启动tomcat,  
  '访问
http://localhost:8080/webservicetest/,如果看到"JBuilder   Apache   Axis   Admin   Console"页面  
  '说明发布成功。  
  '\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\  
   
  客户端:  
  Private   Sub   Command1_Click()  
          Dim   sc   As   SoapClient         '调用SOAP客户端  
          Set   sc   =   New   SoapClient   '进行实例化  
           
          On   Error   Resume   Next   '出错时转到下一条语句  
           
          sc.mssoapinit   "
http://192.168.1.6:8080/webserver/services/HelloWorld?wsdl"  
          If   Err   Then  
                  MsgBox   "SoapClient.mssoapinit   failed.   "   &   Err.Description,   vbExclamation  
                  Err.Clear  
                  Exit   Sub  
          End   If  
           
          'Text1.Text   =   sc.sayHello()  
          Text1.Text   =   sc.echo(Text1.Text)  
          If   Err   Then  
                  MsgBox   "SoapClient.echo   failed.   "   &   Err.Description   &   vbCrLf   &   sc.faultstring   &   vbCrLf   &   sc.detail,   vbExclamation  
                  Err.Clear  
                  Exit   Sub  
          End   If  
  End   Sub  


----------------
参考一下  
   
  //****服务器端*******  
  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)   &   "
"  
  rs.MoveNext  
  wend  
  end   if  
  set   objXmlHttp=nothing  
  set   objXmlDoc=nothing  
  set   rs=nothing 

---------------------

如果webservice不使用windows身份验证:  
          Dim   objSoapClient     As   New   SoapClient  
          objSoapClient.ClientProperty("ServerHTTPRequest")   =   True  
          bjSoapClient.mssoapinit   "
http://loacalhost/service1/service1.asmx?WSDL"  
          MsgBox   objSoapClient.Function1("string1",   "string2")  
  以上的代码可以顺利通过;但是如果webservice使用windows身份验证,我使用了一下代码:  
          Dim   objSoapClient     As   New   SoapClient  
          objSoapClient.ClientProperty("ServerHTTPRequest")   =   True  
          objSoapClient.ConnectorProperty("AuthName")   =   "Username"  
          objSoapClient.ConnectorProperty("AuthPassword")   =   Password"  
          bjSoapClient.mssoapinit   "
http://loacalhost/service1/service1.asmx?WSDL"  
          MsgBox   objSoapClient.Function1("string1",   "string2")  
  不能通过,请高手赐教正确的方法   (帐号肯定正确,Micsoft   soap   type   libaray已经引用!)  

---------------
自己的问题自己解决,先下载wsdl  
  Dim   objSoapClient     As   New   SoapClient  
  objSoapClient.ClientProperty("ServerHTTPRequest")   =   True  
  objSoapClient.MSSoapInit   "service1.WSDL"  
  objSoapClient.ConnectorProperty   ("EndPointURL")="
http://loacalhost/service1/service1.asmx?WSDL"  
  objSoapClient.ConnectorProperty("AuthName")   =   "Username"  
  objSoapClient.ConnectorProperty("AuthPassword")   =   Password"  
   
  MsgBox   objSoapClient.Function1("string1",   "string2")  
-------------------

来源:网络收集

 
[收藏] [返回顶部] [打印本页] [关闭窗口]  
 
 
 
 相关主题:  
 
ASP.NET Web服务实现软件共享
Web 开发 介绍几种调用WebService的方法
在 VB 中调用 C# 写的 WebService
 
 网友评论:
正在加载……
 
*评论者:
主页:
标题:
*内容:
【声明】 地球黑匣子网刊载的资讯及其他内容均由网友提供分享 并且纯属作者个人观点,不表示地球黑匣子网同意其说法或描述,仅为提供更多信息,也不构成任何建议。网友转载请注明原作者姓名及出处。如有侵犯到您的版权,请与我们联系,我们会马上进行重新整理!
最新日志列表
人气主题
 
 
 
 
声明:本网站部分内容属网民发布和来自于互联网。对于引用、发布、转载和放置的内容(广告、链接、文字、图像或声音),所产生的所有法律责任,都将由信息归属者或者广告厂商提供者承担,并且由此产生的版权、署名权的异议、纠纷,本网站概不承担任何责任,本站转载素材仅供大家欣赏和分享,切勿做为商业目的使用。
 
Copyright © 地球黑匣子网 2007.06 - 2010   Email:dqhxzcom@163.com
鲁ICP备07501416号   QQ:254212580 网站管理