delphi 调用 C#写的webservice

倖福魔咒の 提交于 2020-03-14 08:13:22

看以下的一个例子(转) 
先用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);   //测式了返回值还是空,不知为什么。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!