delphi 调用 C#写的webservice

看以下的一个例子(转) 
先用vs.net创建一个简单的webservices; 
1.打开vs.net2003   新建一个webservises   命名为WebService1             
2.添加两个WebMethod

[WebMethod] public   string   HelloWorld() { return   "Hello   World   用.NET写的web服务!!^_^ "; } 

[WebMethod] public   string   datetostr(DateTime   dt)//将时间转换为字符 { return   dt.ToUniversalTime().ToString(); }

  完整代码

using   System; 

using   System.Collections; 

using   System.ComponentModel; using   System.Data; using   System.Diagnostics; using   System.Web; using   System.Web.Services; 

namespace   WebService1 {                   public   class   Service1   :   System.Web.Services.WebService                   {                                       public   Service1()                                       {                                                         //CODEGEN:   该调用是   ASP.NET   Web   服务设计器所必需的                                                         InitializeComponent();                                       }
#region   组件设计器生成的代码                                                                   //Web   服务设计器所必需的                                       private   IContainer   components   =   null;                                                                     

                                      ///   <summary>                                       ///   设计器支持所需的方法   -   不要使用代码编辑器修改                                       ///   此方法的内容。                                       ///   </summary>                                       private   void   InitializeComponent()                                       {                                       } 

                                      ///   <summary>                                       ///   清理所有正在使用的资源。                                       ///   </summary>                                       protected   override   void   Dispose(   bool   disposing   )                                       {                                                         if(disposing   &&   components   !=   null)                                                         { 

                                                             components.Dispose();                                                         }                                                         base.Dispose(disposing);                                                                         }                                                                         #endregion 

                                      [WebMethod]                                       public   string   HelloWorld()                                       {                                                         return   "Hello   World   用.NET写的web服务!!^_^ ";                                       }                                       [WebMethod]                                       public   string   datetostr(DateTime   dt)//将时间转换为字符                                       {                                                         return   dt.ToUniversalTime().ToString();                                       }                   } }

  

1下面在打开delphi   7 
2新建一个应用程序: 
拖两个button两个edit   和一个HTTPRIO(在webservices页上)到窗体上; 
3.接下来: 
File-> new-> other-> webservices-> WSDL   importer 
点击next   导入 
保存unit   Service1 
4.在unit1(form1   的单元文件)中引用Service1,   XSBuiltIns 
5.   HTTPRIO1的 (特别注意)

。 delphi 7里的设置
    WSDLLocation     属性设置为 'http://localhost/WebService1/Service1.asmx?WSDL '

选择Port和server ,一定要先不然会出错

。 delphi 2010里的设置

URL 属性设置“ttp://localhost/WebService1/Service1.asmx?WSDL ”   只设置这个就行了,不能按delphi7里的设置不然会报错

6.添加form1   的代码如下:

unit   Unit1;   interface uses     Windows,   Messages,   SysUtils,   Variants,   Classes,   Graphics,   Controls,   Forms,     Dialogs,   StdCtrls,   InvokeRegistry,   Rio,   SOAPHTTPClient;   type 

    TForm1   =   class(TForm)         Button1:   TButton;         Button2:   TButton;         Edit1:   TEdit;         Edit2:   TEdit;         HTTPRIO1:   THTTPRIO;         procedure   Button1Click(Sender:   TObject);         procedure   Button2Click(Sender:   TObject);     private         {   Private   declarations   }     public         {   Public   declarations   }     end; var     Form1:   TForm1; implementation uses     XSBuiltIns,     Service1; {$R   *.dfm} procedure   TForm1.Button1Click(Sender:   TObject); var     dtm:TXSDateTime; begin     dtm:=TXSDateTime.Create;     dtm:=DateTimeToXSDateTime(now);     Edit1.Text:=(HTTPRIO1   as   Service1Soap).datetostr(dtm);     dtm.free; end;
procedure   TForm1.Button2Click(Sender:   TObject); begin     Edit2.Text:=(HTTPRIO1   as   Service1Soap).HelloWorld; end; 

end.

vs.net2005开发的话

要在delphi中加一句InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap),   ioDocument);   //测式了返回值还是空,不知为什么。

(0)

相关推荐