我需要与一些web服务交谈,因此我导入了WSDL。我现在尝试调用它,但是它报告了这个异常:No Native to Message converter set
非常,非常烦人,特别是因为我没有权限在这里发布这个服务的代码片段。不过,还是得试试..。有人对如何修正这个错误有一些建议吗?
错误是在rio.pas中在函数TRIO.Generic中生成的。这一行:
if not Assigned(FConverter) then
raise Exception.Create(SNoMessageConverter);由于未知的原因,FConverter被设置为零,因此会生成异常。甚至在发送请求之前就会发生这种情况。没有任何东西被发送到服务,因为Delphi甚至在调用服务之前就崩溃了。
WSDL导入选项,选中选项:
params
H 121导入错误类型<代码>H 222<代码>H 123导入标题types
H 230 as 231实际上,我的系统是新的,Delphi是3天前安装的,导入这个WSDL是我做的第一件事,基本上使用了这些默认设置。
发布于 2010-11-10 16:34:43
使用SoapUI,使用WSDL并创建一个模拟服务。将应用程序指向您的SoapUI mockservice,您就可以捕获您的出站请求。现在您可以回过头来,将这些请求提交给服务并查看响应。这应该让你知道信息是从哪里来的。也就是说,它是来自Delphi的SOAP库,是由于它不理解的东西,还是来自web服务本身,因为您的请求中有一些it不理解的东西?
或者,您可以在Delphi中这样做:利用HttpRIO对象的RIO_BeforeExecute/RIO_AfterExecute事件拦截入站/出站XML。
如果您的流量是http (使用SSL更难,但可能),您也可以使用Fiddler2拦截。
获得原始XML后,使用SoapUI提交请求,并查看您得到了什么。您可能会发现您的请求需要“调整”,或者如果在SoapUI中一切看起来都很好,那么您可能需要在反序列化之前调整响应。
https://stackoverflow.com/questions/4146245
复制相似问题