• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

delphi调用C#写的webservice

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

看以下的一个例子(转) 
先用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人参与评论

请发表评论

全部评论

专题导读
上一篇:
DesignPattern----23.Behavioral.Observer.Pattern(DelphiSample)发布时间:2022-07-18
下一篇:
Delphi文件转换Base64发布时间:2022-07-18
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap