gpt4 book ai didi

delphi - "No Native to Message converter set"是什么意思?

转载 作者:行者123 更新时间:2023-12-03 15:57:29 25 4
gpt4 key购买 nike

我需要与一些 Web 服务通信,因此我导入了 WSDL。我现在尝试调用它,但它报告了此异常:No Native to Message converter set
非常非常令人恼火,特别是因为我无权在此处发布此服务的代码片段。不过,必须尝试...有人对如何修复此错误有一些建议吗?

<小时/>

该错误是在 rio.pas 的 TRIO.Generic 函数中生成的。这一行:

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

由于未知原因,FConverter被设置为nil,从而产生异常。这甚至在发送请求之前就会发生。没有任何内容发送到服务,因为 Delphi 在调用服务之前就崩溃了。

<小时/>

WSDL 导入选项,选中的选项:

  • 一个输出参数是 Return
  • 展开文字参数
  • 生成析构函数
  • 警告评论
  • 将字符串映射到宽字符串
  • 生成有关类型和接口(interface)的详细信息
  • 忽略带有 HTTP 绑定(bind)的端口类型
  • 不要发出未使用的类型
  • 验证枚举类型
  • 导入故障类型
  • 导入 header 类型
  • 处理包含和导入的架构
  • 生成类别名作为类类型
  • 处理可为空和可选的元素

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

最佳答案

使用 SoapUI 使用 WSDL 并创建模拟服务。将您的应用程序指向 SoapUI 模拟服务,您就可以捕获出站请求。现在您可以转身并将这些请求提交给服务并查看响应。这应该能让您了解消息的来源。即,它是来自 Delphi 的 SOAP 库,因为它不理解某些内容,还是来自 Web 服务本身,因为 IT 在您的请求中不理解某些内容?

或者,您可以在 Delphi 中执行此操作:利用 HttpRIO 对象的 RIO_BeforeExecute/RIO_AfterExecute 事件拦截入站/出站 XML。

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

获得原始 XML 后,使用 SoapUI 提交请求,然后看看会得到什么。您可能会发现您的请求需要“调整”,或者如果 SoapUI 中一切看起来都很好,您可能需要在反序列化之前调整响应。

关于delphi - "No Native to Message converter set"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4146245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com