客户端程序由delphi6开发,WEB SERVICE是VS2005(C#)写的。碰到的问题很多,大都GOOGLE都可以找到答案。但有些我还是重复一下,另外我碰到的一些问题也在这里备注一下。
刚开始是在Delphi6+sp1的环境下开发客户端程序,会出现Internal error(500)的错误或调用的web service的命名空间不正确,无法正确解析。解决办法是在用wsdl importer工具生成的代理类中插入以下两句话:
? InvRegistry.RegisterDefaultSOAPAction(TypeInfo(ServiceSoap), 'http://www.qk.com/HelloWorld');//①
? InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);
①处方法的第二个参数HellowWorld前半部分表示web service类的命名空间,也就是在C#中定义的命名空间,代码片断如下:InvRegistry.RegisterInvokeOptions(TypeInfo(DataServiceSoap), ioDocument); 就报错,说InvRegistry没有RegisterInvokeOptions声明。解决办法是下载delphi6 sp2就可以了。
...
[WebService(Namespace:="http://www.qk.com/")
[WebServiceBinding(ConformsTo=WsiProfiles.None)]
[SoapRpcService(RoutingStyle=SoapServiceRoutingStyle.SoapAction)]
public class Service?
? ......
刚开始是在Delphi6+sp1的环境下开发客户端程序,会出现Internal error(500)的错误或调用的web service的命名空间不正确,无法正确解析。解决办法是在用wsdl importer工具生成的代理类中插入以下两句话:
? InvRegistry.RegisterDefaultSOAPAction(TypeInfo(ServiceSoap), 'http://www.qk.com/HelloWorld');//①
? InvRegistry.RegisterInvokeOptions(TypeInfo(ServiceSoap), ioDocument);
①处方法的第二个参数HellowWorld前半部分表示web service类的命名空间,也就是在C#中定义的命名空间,代码片断如下:InvRegistry.RegisterInvokeOptions(TypeInfo(DataServiceSoap), ioDocument); 就报错,说InvRegistry没有RegisterInvokeOptions声明。解决办法是下载delphi6 sp2就可以了。
...
[WebService(Namespace:="http://www.qk.com/")
[WebServiceBinding(ConformsTo=WsiProfiles.None)]
[SoapRpcService(RoutingStyle=SoapServiceRoutingStyle.SoapAction)]
public class Service?
? ......