用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. github 上传或删除 文件 命令

    git clone https://github.com/onionhacker/bananaproxy.git cd ~/../.. git config --global user.email & ...

  2. Reporting Services 2: 参数化报表

    http://www.cnblogs.com/waxdoll/archive/2006/07/16/452467.html

  3. iOS 地图坐标系之间的转换WGS-84世界标准坐标、GCJ-02中国国测局(火星坐标,高德地图)、BD-09百度坐标系转换

    开发过程中遇到地图定位不准确,存在偏差.首先确认你获取到的坐标所在坐标系跟地图数据是不是相匹配的. 常用的地图SDK:高德地图使用的是GCJ-02(也就是火星坐标系),百度使用的是BD-09百度坐标系 ...

  4. UIKit Animation

    UIKit Animation 1.属性动画 - (void)changeFrameAnimation { [UIView beginAnimations:@"frameAnimation& ...

  5. html-----002

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 冒泡排序--c#

    //冒泡排序 Console.WriteLine("请输入一个程序的数值"); int[] array = { 111, 2, 5, 32, 321 }; int temp = 0 ...

  7. HDU3591找零,背包

    题目大概的意思就是:小强用硬币买东西,硬币有N种,面值为Vi,店家有各种硬币都有无限个,而小强只有Ci个(分别对应Vi) 问最小交易硬币数,就是一个有找零的背包问题啦. 我的上一篇博客跟这hdu359 ...

  8. 接触.net5年了,感觉自己的知识面很狭隘。

    08年毕业找工作期间开始接触网页开发,由于在学校了混了4年时间,我只能从html标记语言开始学习,后来应聘到一个网站建设公司,开始学习ps.Dreamweaver和asp.由于基础薄弱,一个月后离开了 ...

  9. Windows phone 之 UserControl的应用

    一.新建一个UserControl.xaml页面  MyUserControl.xaml 添加代码如下: <UserControl x:Class="bodypicture.MyUse ...

  10. 我的Hibernate入门

    今天忙了一整天,终于搭建好了我的第一个Hibernate程序,中间关于hibernate.cfg.xml的问题搞了半天,不过最后还是搞明白了,下面来讲一讲过程. 首先在你的eclipse中安装Hibe ...