用delphi 怎么调用用C#写的webservice?

解决方案 »

  1.   

    搜一下李维写的Delphi调用Web Service的文章
      

  2.   

    看以下的一个例子(转)先用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();                   }         }}2.编译调试:  我们的webservices已经可以用了;  下面在打开delphi 7新建一个应用程序:拖两个button两个edit 和一个HTTPRIO(在webservices页上)到窗体上;3.接下来:File->new->other->webservices->WSDL importer点击next 导入保存unit Service14.在unit1(form1 的单元文件)中引用Service1, XSBuiltIns5. HTTPRIO1的WSDLLocation  属性设置为'http://localhost/WebService1/Service1.asmx?WSDL'6.添加form1 的代码如下:unit Unit1; interfaceuses  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;
     implementationuses  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.7.编译运行
      

  3.   

    失败,
    服务端接收客户端传来的参数为NULL
      

  4.   

    vs.net2005开发的话
    要在delphi中加一句InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);
      

  5.   

    DaXiaLv(爱睡觉的猪) 答案正确