delphi开发的soap服务,客户端调用出错 基本情况是 delphi开发的soap服务端和客户端程序。服务端放在iss的可执行目录下。 只是简单实现了一个返回字符串的接口函数。 当客户端在本机(有delphi开发环境)执行没有问题。 在局域网其他机器上可以用ie打开服务的exe文件,并出现服务接口信息。但是执行客户端程序,调用那个接口函数的时候报地址错误,不知道是什么原因? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 1、确认客户端的url是否正确,服务端路径变化,客户端也要更改;2、服务端程序是否有注册?在initializaiton InvRegistry.RegisterInterFace(TypeInfo(IYourInterFace)); invRegistry.RegisterInvokableClass(TYourClass); ---------------URL写的是IP地址,客户端在开发的机器上执行是正常的,在其他机器上才报访问非法的地址错误。服务端注册应该是自动生成的吧。我是用向导生成的接口。 你只要檢查服務端程序是否有如下代碼就可以了。initializaiton InvRegistry.RegisterInterFace(TypeInfo(IYourInterFace)); invRegistry.RegisterInvokableClass(TYourClass);若有,你通過ie查看wsdl是否有你需要的接口 InvRegistry.RegisterInterFace(TypeInfo(IYourInterFace)); 这个在..Intf.pas文件里invRegistry.RegisterInvokableClass(TYourClass); 这个在..Impl.pas文件里http://..../pMyTest2.exe/wsdl 可以看到2条记录,第一就我写的接口 (另外说明一下,我在同一台机器上执行客户端是正常的) 在服務端你有運行你的exe嗎?若沒有,先運行一下,關閉後,再在客戶端請求服務,看是否正常。做這個動作,是想確認,程序在服務端是否被注冊了。猜測可能是注冊問題,導致在服務端無法找到函數,而報地址錯誤。 服务程序是没有界面的,运行时出现DOS窗体后,就一闪而过了!在其他机器上运行客户端程序,在执行调用方法时候 还是报 Access violation at address 00c4958c.Write of address 00c4958c在同开发的这台机器上,客户端是正常的!调用也正常。另外:我把delphi自带的例子,也是这样的情况。 按照 unsigned 的說法, 你在client端做檢查,看看是否正常獲取接口。我說的那種驗證方式未必是正確的。 ----------------客户端怎么做检查呢! 怎么指定是否获取接口成功! 另一台机器是没有delphi的。另一台机器上的IE 输入wsdl是有返回的正常.现在怀疑是不是我的DELPHI有问题,连联机的例子都报同样的错 delphi 开发的soap cgi程序,发布到其他机器上,除了执行权限,还需要配置些什么! web服務器iis配置好就可以了。 网站正常可以访问,我在IIS管理器中点‘浏览’都报404错误(找不到文件)需要安装 ActivePerl delphi7开发的soap发布到win2003 IIS6.0上好像有问题啊! 我开发的soap只支持xp,不支持win2003! 哎!只有不了了之! http://hi.baidu.com/woainiyuefei/blog/item/d6640d19d557f70d35fa41ac.html 悲催 多线程读写一个全局数据区 给各位D友拜个早年! 急聘软件工程师(北京) 新手问路 dbchart的使用方法 如何实现EDIT 输入内容不同 如何规定EDIT输入数的最大限制 谁看过李维 的书啊? 老兄,来搞搞第三方控件吧!!!!!!!!!!!呵呵!!!!!!!! 你好,打扰了。请帮帮看看这段代码的算法是什么好吗? 编程序写个程序集成编辑器, 如何做程序单步运行类似效果的调试窗口?如: tc, etc [高难度]如何用向另一程序的非焦点的窗口发送组合键? idsmtp发邮件到QQ邮箱为垃圾邮件?
2、服务端程序是否有注册?在initializaiton
InvRegistry.RegisterInterFace(TypeInfo(IYourInterFace));
invRegistry.RegisterInvokableClass(TYourClass);
服务端注册应该是自动生成的吧。我是用向导生成的接口。
initializaiton
InvRegistry.RegisterInterFace(TypeInfo(IYourInterFace));
invRegistry.RegisterInvokableClass(TYourClass);
若有,你通過ie查看wsdl是否有你需要的接口
这个在..Intf.pas文件里invRegistry.RegisterInvokableClass(TYourClass);
这个在..Impl.pas文件里
http://..../pMyTest2.exe/wsdl 可以看到2条记录,第一就我写的接口 (另外说明一下,我在同一台机器上执行客户端是正常的)
在服務端你有運行你的exe嗎?若沒有,先運行一下,關閉後,再在客戶端請求服務,看是否正常。
做這個動作,是想確認,程序在服務端是否被注冊了。猜測可能是注冊問題,導致在服務端無法找到函數,而報地址錯誤。
我說的那種驗證方式未必是正確的。
----------------客户端怎么做检查呢! 怎么指定是否获取接口成功! 另一台机器是没有delphi的。
另一台机器上的IE 输入wsdl是有返回的正常.现在怀疑是不是我的DELPHI有问题,连联机的例子都报同样的错
delphi7开发的soap发布到win2003 IIS6.0上好像有问题啊!
哎!只有不了了之!