用delphi的THTTPRIO控件调用了c#写的webservice。

时间:2022-09-06 09:04:24

用delphi的THTTPRIO控件调用了c#写的webservice。

下面是我调试时遇到的一些问题:

1,导入wsdl文件:file--new----other----wenservice---WSDLimporter---输入wsdl地址:如下:http://10.0.1.128:7777/ShineMediaPublish/WebService/WebServiceCall.asmx?wsdl

注意末尾的:'?wsdl'不能少。要不可能会说找不到。

2,设置THTTPRIO控件的属性:

后来赋给URL属性,就不报错了。

3,传递参数是web服务端总为空:

在导入的接口单元的声明部分添加如下代码:

InvRegistry.RegisterInvokeOptions(TypeInfo(WebServiceCallSoap),ioDocument);//其中红色部分为导入接口名称。

下面是客户端的简单代码:

procedure TForm1.btn1Click(Sender: TObject);
var
  s:WideString;
begin
  s:='打分得分';
  edt1.Text:=(htpr1 as WebServiceCallSoap).OperaterLogin('1','dd',s);//operaterLogin为接口方法。

end;

end.

==========================================================================

下面说明如何编写用于IIS发布的ISAPI类型的WebService。
1、 New|Other|WebServices|SOAP Server Application|这里先选择建立Web App Debugger类型的WebService,因为这种类型的WebService便于调试,

当我们调试好它,准备发布时再将 此类型转换为ISAPI类型。
2、 选择Web App Debugger后,随便输入一个ClassName,这里我们输入“Test”
3、 随后Delphi会询问你是否建立接口单元,选择是,然后输入接口的名字,我们输入Main,
   Delphi将自动建立接口单元(名字为你输入的接口名+Intf结束,即MainIntf)和实现接口的单 元(名字为你输入的接口名+Impl,即MainImpl)。到此一个空的WebService已建立好。
4、 接下来我们将编写供别人调用的WebService函数。在此我们编写一个简单的例子。打开接口单元
(MainIntf),在Type后,接口声明后添加接口函数
“function GetMsg(AMsg: string): String; stdcall;”,函数后面必须加上“stdcall”。

5、接口函数的声明已经完成,下面就是要实现这个函数了。打开接口实现单元(MainImpl),
   在public中写上该函数的声明,在implement后写该函数的实现。

6、到此,WebService已经撰写完毕。接下来是调试。在我们新建的时候,Delphi已经为我们建立了一个Unit1和其窗体,在Unit1中引用接口单元(MainImpl),然后在窗体中加一个
   按钮,在按钮的单击事件中调用刚才写的WebService函数就可以调试了,

7、调试成功后就可以转类型了,将Web App Debugger类型转换为ISAPI类型其实很简单,我们先重新建一个ISAPI类型的WebService项目,依次选择New|Other|WebServices|SOAP Server Application|ISPA/…,提示是否创建接口时选择“是”,然后输入和刚才一
   样的接口名,接着保存好,然后将调试成功的Web App Debugger类型的WebService项目中的
   接口单元和接口实现单元复制替换掉刚刚创建的ISAPI类型项目中的接口单元和接口实现单元,
   然后打开ISAPI类型的WebService,编译生成dll。至此ISAPI类型的WebService建立成功。

8、将ISAPI类型的WebService发布到IIS上。在IIS中新建站点,新建时将执行权限设置成“脚本
   和可执行文件”,将WebService整个项目拷贝到站点文件夹下,启动站点,该WebService就算
   发布成功了,如果IIS是6.0以上的注意在Web服务扩展中将“所有未知ISAPI扩展”设置为允许,
   具体设置可参见IIS帮助文档。

9、如何用Delphi调用刚才写的WebService。在浏览器中输入刚才站点的路径,如:
   http://192.168.1.5:90/,浏览器转到项目所在文件夹,

点击bin,打开生成的dll文件夹,再点击生成的dll文件,打开如下图所示的的dll描述页面,
   该dll中有三个接口函数HZ,LJ,SaveData,它们都是供别人调用的接口函数。

点击WSDL打开WSDL描述页面,此时复制该页面的网址,这个网址是我们要用到的。

10、 得到网址后,新建一个Application,我们就在这个Application中调用刚才的WebService。
     依次点击New|Other|WebServices|WSDL Import,如后提示输入网址,我们输入刚才复制的网址,点击next,finish,此时Delphi将自动添加一个单元,该单元就是调用WebService的
     单元,有了这个单元我们就可以调用WebService了。在Unit1中引用该单元,再添加一个按钮 在按钮的单击事件中声明一个接口对象,然后调用自动生成单元中的GetMainIntf(该方法是
     自动生成的)函数给这个接口对象赋值,然后就可以用这个接口对象调用接口函数了。

用delphi的THTTPRIO控件调用了c#写的webservice。的更多相关文章

  1. Delphi连接Oracle控件ODAC的安装及使用(轉載)

     Delphi连接Oracle控件ODAC的安装及使用 2010-08-13 01:13:37 标签:Oracle Delphi 控件 休闲 ODAC 原创作品,允许转载,转载时请务必以超链接形式标明 ...

  2. Delphi创建ActiveX控件,实现安全接口及*面代码

    Delphi创建OCX控件非常的方便,但IE调用时弹出的安全认证非常麻烦,有时OCX也不需要界面,IE调用时需要隐藏,非常不方便.在DELPHI中创建OCX实现安全接口和创建事件中修改部分代码 实现安 ...

  3. 制作用于日期时间型字段的DELPHI数据感知控件

    用DELPHI开发C/S应用方便而快速,因为它拥有大量易于使用的数据访问和数据感知控件.然而万事总是难以完美,DELPHI的DBEdit控件用于输入日期时间型字段却很不方便,为了改善这一缺点,笔者开发 ...

  4. Delphi 编写ActiveX控件(OCX控件)的知识和样例(有详细步骤)

    一.ActiveX应用情况简介: ActiveX控件也就是一般所说的OCX控件,它是 ActiveX技术的一部分.ActiveX是微软公司推出的基于组件对象模型COM的技术,包括对Windows 32 ...

  5. 转)delphi chrome cef3 控件学习笔记 (二)

    (转)delphi chrome cef3 控件学习笔记 (二) https://blog.csdn.net/risesoft2012/article/details/51260832 原创 2016 ...

  6. Delphi的TListView控件拖放选定行操作

    http://www.tansoo.cn/?p=401 Delphi的TListView控件拖放选定行操作的例子,效果图如下:TListView控件拖动选定行到指定位置 具体实现步骤: 一.新建一个D ...

  7. 用Delphi的TIdHttp控件发起POST请求和Java的Servlet响应

    http://blog.csdn.net/panjunbiao/article/details/8615880   用Delphi的TIdHttp控件发起POST请求和Java的Servlet响应

  8. Delphi 开发ActiveX控件(非ActiveForm)

    Delphi 开发ActiveX控件(非ActiveForm) Q:为什么不采用ActiveForm工程?通过它可以快速开发带窗体控件,创建过程也非常简单(都不用考虑安全接口问题),很省事! A:如果 ...

  9. delphi 使用工控机控件 iThreadTimes 出现问题, 导致主程序创建页面的时候, 阻塞消息, 不能正常执行。

    delphi  使用工控机控件 iThreadTimes 出现问题, 导致主程序创建页面的时候, 阻塞消息, 不能正常执行. 使用这个控件需要小心 function Tfrm_MainIPC.Open ...

随机推荐

  1. [DeviceOne开发]-土地销售项目源码分享

    一.简介 这个是一个真实项目开源,虽然不是很花哨,但是中规中矩,小细节处理的也很好,非常值得参考和借鉴.里面的数据都缓存到本地,可以离线运行,但是调整一下代码,马上就可以和服务端完全对接.后续会有详细 ...

  2. hibernate(四)__由表逆向创建Domain对象和对象关系映射文件

    之前我们是手写Domain对象和对象关系映射文件->然后生成数据库中的Table. 现在我们反过来先在数据库中建好Table->然后用工具生成Domain对象和对象关系映射文件. 步骤: ...

  3. 用于科创的git log美化输出

    git log --reverse --pretty=format:'%cd %s' --date=short > a.txt 更好的: git log --reverse --pretty=f ...

  4. 【flash】关于flash的制作透明gif的一个小技巧

    关于flash的制作透明gif的一个小技巧 或者说是一个需要注意的地方 1.导出影片|gif,得到的肯定是不透明的.2.想要透明背景,必须通过发布.3.flash中想要发布gif动画的话,不能有文字, ...

  5. Objective-C中的runtime的原理和用法

    一.runtime介绍 runtime翻译就是运行时,我们称为运行时机制.在OC中最重要的体现就是消息发送机制. 1)在C语言中,程序在编译过程中就决定调用哪个函数. 2)在OC中,编译的时候不会决定 ...

  6. SQL 使用经验

    1. 写存储过程,Update数据库表,一定要根据idRow,也就是主键唯一键来更新. 更新操作,如果根据其他条件更新,之后就有的忙活了. 2. Query语句要加NOLOCK

  7. 网易云课堂_程序设计入门-C语言_第五周:函数_1分解质因数

    1 分解质因数(5分) 题目内容: 每个非素数(合数)都可以写成几个素数(也可称为质数)相乘的形式,这几个素数就都叫做这个合数的质因数.比如,6可以被分解为2x3,而24可以被分解为2x2x2x3. ...

  8. 用VsCode编辑TypeScript

    文地址:https://code.visualstudio.com/Docs/languages/typescript TypeScript是Javascript的超集,它提供了类.模块.接口来帮助你 ...

  9. 小tips:使用rem+vw实现简单的移动端适配

    首先设置meta属性,如下代码: <meta name="viewport" content="width=device-width, initial-scale= ...

  10. EHCI规范&lpar;转&rpar;

    https://blog.csdn.net/qiurihuanghua/article/details/6411640 1. EHCI 1.0规范介绍 EHCI规范为USB 2.0规范定义了一个Hos ...