用delphi 怎么调用用C#写的webservice? 用delphi 怎么调用用C#写的webservice? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 搜一下李维写的Delphi调用Web Service的文章 看以下的一个例子(转)先用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.编译运行 失败,服务端接收客户端传来的参数为NULL vs.net2005开发的话要在delphi中加一句InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument); DaXiaLv(爱睡觉的猪) 答案正确 旅游回来了,散分 请问哪位高手知道GetRegionData() 获得的对象是RgnData 怎样将它转换成为点坐标 sql语句出错的提示? rzbutton小问题 TEDIT控件 的问题 怎样用代码使用一窗口最大化? 请教高手,为什么我的TQuey控件有的fieldname的内容查不到? 操作WORD问题,在线等候,立即结帐!!! 有没有能打印ehlib3.1的Grid(除了它自带的那个)的打印控件? 请问这是缺少什么控件了? 请问如何在同一个应用程序的两个窗体间拖动控件?谢谢 高手帮我看一下代码!怎么不运行呢?!有关socket的多线程
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.编译运行
服务端接收客户端传来的参数为NULL
要在delphi中加一句InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);