当前位置: 首页 > news >正文

delphi2010 开发及调试WebService 实例

delphi2010 开发及调试WebService 实例

 

基于Delphi的WebService编写

 

Delphi编写soap服务器与客户端程序

 

Delphi XE5通过WebService开发Web服务端和手机客户端

 

2017/03/02

---------------------------------------------------------------------------------------------------------------------

按“delphi2010 开发及调试WebService 实例”步骤到第7步时点击WSDL出现不了XML文档,最后生成文件失败。对WebService开发一窍不通,具体原因不明。

在此希望有了解此道的大侠指点。

 

网络上可供测试的Web Service

 

参考:

WebService 的创建,部署和使用

 

Delphi 调用webservice接口

 

2017/03/02

---------------------------------------------------------------------------------------------------------------------

前些天用网友“delphi2010 开发及调试WebService 实例”的方法一直没有成功,今天无意中试通了。在此记录一下过程:

添加网站,使用“DefaultAppPool”,在“处理程序映射”里使用与“DefaultAppPool”对应的“ISAPI-dll”进行编辑。最后如果在物理路径里有生成“web.config”删掉。

浏览,如果有错误按提示排除即可。

 

2017/03/02

---------------------------------------------------------------------------------------------------------------------

1、创建Webservices 服务端;

2、在Windows 上添加IIS;

3、启动IIS;

4、配置IIS运行Webservices 服务端;

5、创建Webservices 客户端,运行并调用Webservices 服务端方法。

 

 

DelphiXE7中创建WebService(服务端+客户端) good

 

2017/03/08

---------------------------------------------------------------------------------------------------------------------

Webservices 客户端:

1、创建一个VCL application工程;

2、“File”->“New”->“Other...”->“Delphi Projects”->“WebSrvice”->“WSDL Importer”

3、在弹出窗口“WSDL Source”中输入“http://localhost:7923/ReporInfo.dll/wsdl/IMyTest”(前面页面的可生成xml的地址)->“Next”->默认选项->“Finish”

4、delphi会自动引入一个单元,这个单元就是WebService的接口单元,里面会自动生成一个Get开头方法。

5、在VCL单元引用这个接口单元,

使用方法1:

在Form上分别放置TButton、THTTPRIO;

修改HTTPRIO1属性:

a、WSDLLocation: http://localhost:7923/ReporInfo.dll/wsdl/IMyTest(必须先做这一步以下两个属性才有可选项)

b、Service:(下拉可选)

c、Port:(下拉可选)

 

在TButton->Click事件里编写代码

procedure TForm1.Button1Click(Sender: TObject);
var
  AOS: String;
begin
  AOS := (HTTPRIO1 as IMyTest).SayHello('励研科技');
  ShowMessage(AOS);
end;

 

使用方法2:

在Form上放置TButton,在TButton->Click事件里编写代码

 

procedure TForm1.Button1Click(Sender: TObject);
var
  obj: IMyTest;
  s: String;
begin
  obj := GetIMyTest();
  s := obj.SayHello('阿米');
  ShowMessage(s);
end;

6、因为字符编码格式的不同,在接口单元有两处需要修改

function GetIMyTest(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): IMyTest;
const
  defWSDL = 'http://localhost:7923/ReporInfo.dll/wsdl/IMyTest';
  defURL  = 'http://localhost:7923/ReporInfo.dll/soap/IMyTest';
  defSvc  = 'IMyTestservice';
  defPrt  = 'IMyTestPort';
var
  RIO: THTTPRIO;
begin
  Result := nil;
  if (Addr = '') then
  begin
    if UseWSDL then
      Addr := defWSDL
    else
      Addr := defURL;
  end;
  if HTTPRIO = nil then
    RIO := THTTPRIO.Create(nil)
  else
    RIO := HTTPRIO;

  RIO.HTTPWebNode.UseUTF8InHeader:= True; //这里加上这一句

  try
    Result := (RIO as IMyTest);
    if UseWSDL then
    begin
      RIO.WSDLLocation := Addr;
      RIO.Service := defSvc;
      RIO.Port := defPrt;
    end else
      RIO.URL := Addr;
  finally
    if (Result = nil) and (HTTPRIO = nil) then
      RIO.Free;
  end;
end;
initialization
  InvRegistry.RegisterInterface(TypeInfo(IMyTest), 'urn:MyTestIntf-IMyTest', '');
  InvRegistry.RegisterDefaultSOAPAction(TypeInfo(IMyTest), 'urn:MyTestIntf-IMyTest#SayHello');
  InvRegistry.RegisterInvokeOptions(TypeInfo(IMyTest), ioDocument);//这里加上这一句

 

7、编译、执行;

 

相关文章:

  • pyhon3.0 day01 变量、输入、输出、循环
  • 【BZOJ3675】【APIO2014】序列分割 [斜率优化DP]
  • 使用redux开发的简单步骤
  • Oracle索引聚簇因子的含义及重要性
  • 处理Matlab 警告: MATLAB 已通过改用 OpenGL 软件禁用了某些 高级的图形渲染
  • Centos iptables常用命令及设置
  • kafka-java客户端连接
  • mysql学习笔记(四)--- 聚合函数、控制流程函数
  • .NET 同步与异步 之 原子操作和自旋锁(Interlocked、SpinLock)(九)
  • 让mysql查询强制走索引
  • Unity几个有用的游戏运动特效
  • 终端搜索工具
  • ubuntu 15.04
  • STM32 IAP docs
  • Dockerfile构建LNMP分离环境部署wordpress
  • 收藏网友的 源程序下载网
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • Angular 响应式表单 基础例子
  • Bootstrap JS插件Alert源码分析
  • canvas绘制圆角头像
  • Centos6.8 使用rpm安装mysql5.7
  •  D - 粉碎叛乱F - 其他起义
  • Hibernate最全面试题
  • JavaScript类型识别
  • QQ浏览器x5内核的兼容性问题
  • Shadow DOM 内部构造及如何构建独立组件
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • 分享一份非常强势的Android面试题
  • 警报:线上事故之CountDownLatch的威力
  • 温故知新之javascript面向对象
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 以太坊客户端Geth命令参数详解
  • 走向全栈之MongoDB的使用
  • NLPIR智能语义技术让大数据挖掘更简单
  • ​LeetCode解法汇总518. 零钱兑换 II
  • (NSDate) 时间 (time )比较
  • (pytorch进阶之路)扩散概率模型
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (多级缓存)多级缓存
  • (附源码)springboot“微印象”在线打印预约系统 毕业设计 061642
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (原創) 如何優化ThinkPad X61開機速度? (NB) (ThinkPad) (X61) (OS) (Windows)
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .net 4.0发布后不能正常显示图片问题
  • .net 7 上传文件踩坑
  • .NET序列化 serializable,反序列化
  • .NET中使用Protobuffer 实现序列化和反序列化
  • @Transaction注解失效的几种场景(附有示例代码)
  • [ 2222 ]http://e.eqxiu.com/s/wJMf15Ku
  • [<死锁专题>]
  • [Android]Tool-Systrace
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [APIO2015]巴厘岛的雕塑