代码之家  ›  专栏  ›  技术社区  ›  Wim ten Brink

“没有本机到消息转换器集”是什么意思?

  •  3
  • Wim ten Brink  · 技术社区  · 14 年前

    我需要和一些web服务交谈,然后导入WSDL。我现在尝试调用它,但它报告了此异常: No Native to Message converter set
    非常非常恼人,特别是因为我没有权限在这里发布这个服务的代码片段。不过,还是要试着。。。有人对如何修正这个错误有什么建议吗?


      if not Assigned(FConverter) then
        raise Exception.Create(SNoMessageConverter);
    

    由于未知原因,FConverter设置为nil,因此生成异常。甚至在发送请求之前就会发生这种情况。不会向服务发送任何内容,因为Delphi甚至在调用服务之前就崩溃了。


    WSDL导入选项,选中选项:

    • 一个输出参数是Return
    • 生成析构函数
    • 警告注释
    • 将字符串映射到宽字符串
    • 忽略具有HTTP绑定的端口类型
    • 不发出未使用的类型
    • 验证枚举类型
    • 导入故障类型
    • 进程包含和导入的架构
    • 将类别名生成为类类型

    实际上,我的系统是新的,Delphi是3天前安装的,导入这个WSDL是我做的第一件事,基本上使用这些默认设置。

    1 回复  |  直到 14 年前
        1
  •  2
  •   Chris Thornton    14 年前

    使用SoapUI使用WSDL并生成模拟服务。将应用指向SoapUI mockservice,就可以捕获出站请求。现在您可以返回并将这些请求提交到服务并查看响应。这会让你知道信息是从哪里来的。i、 e.它是来自Delphi的SOAP库,因为它不理解的东西,还是来自web服务本身,因为它在您的请求中不理解的东西?

    或者,您可以在Delphi中这样做:通过利用HttpRIO对象的RIO-beforexecute/RIO-AfterExecute事件拦截入站/出站XML。

    如果您的通信量是http(SSL更难,但有可能),也可以使用Fiddler2进行拦截。