用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控件的属性:
开始把http://10.0.1.128:7777/ShineMediaPublish/WebService/WebServiceCall.asmx?wsdl赋给了wsdlLocation属性。连接时总是报错。
后来赋给URL属性,就不报错了。
3,传递参数是web服务端总为空:
在导入的接口单元的声明部分添加如下代码:
InvRegistry.RegisterInvokeOptions(TypeInfo(WebServiceCallSoap),ioDocument);//其中红色部分为导入接口名称。
下面是客户端的简单代码:
procedure TForm1.btn1Click(Sender: TObject);
var
begin
end;
end.
==========================================================================
下面说明如何编写用于IIS发布的ISAPI类型的WebService。 当我们调试好它,准备发布时再将 此类型转换为ISAPI类型。
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(该方法是 自动生成的)函数给这个接口对象赋值,然后就可以用这个接口对象调用接口函数了。 |