gpt4 book ai didi

Delphi 2007 未正确使用 JAX-WS Web 服务

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

当我尝试使用 JAX-WS 在 Java 中设置的 Web 服务时,我遇到了 Delphi 2007 的问题。该 Web 服务可以从另一个 Java 程序和 C#/ASP.NET 2.0 网站正常使用。但是,当我尝试使用 Delphi 2007 中的 WSDL 导入程序(17-DEc-2007 补丁)访问相同的服务时,JAX-WS Web 服务无法识别我传递给它的任何参数并将它们置为空。

我检查了 Delphi 传递的 SOAP 消息,并将其与其他消息进行比较,它们几乎相同(除了一些可忽略的命名空间 dec 和来自 .NET 的大量 View 状态!)

我也浏览过网络(最有帮助的链接是 Bob 博士的 http://www.bobswart.nl/Weblog/Blog.aspx?RootId=5:798 ),但没有什么乐趣。

有人遇到过这种情况吗?

TIA。

<小时/>

传奇仍在继续!

在尝试使用 HTTPRIO 对象并使其正常工作后,我最终放弃并尝试通过 HTTP 进行直接 XML 传输。失败。

好的,我用 C# 构建了一个简单的测试器并进行了尝试。工作没问题。

使用 Fiddler 查看前后发送的内容,似乎唯一的区别在于命名空间。我更改了 Delphi 中发送的 XML 中的 namespace ,并且...它有效!

这是 WSDLImporter 生成的原始 XML 示例:

<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<version xmlns="http://path.to.service.com/">
<input>test</input>
</version>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>

这是实际有效的:

<?xml version="1.0"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:version xmlns:ns2="http://path.to.service.com/">
<input>test</input>
</ns2:version>
</S:Body>
</S:Envelope>

既然我知道了这一点,我是否应该更改 WSDLImporter 代码的命名空间值?我在 HTTPRIO 属性上看不到任何明显的内容。

TIA

最佳答案

哈哈它还活着!!!

基本上我不得不拿出推荐的

InvRegistry.RegisterInvokeOptions(TypeInfo(ActivityService), ioDocument);

并强制它使用秒。 5 编码。根据需要生成命名空间,并将参数传递给 Java Web 服务。

对,需要啤酒,很多啤酒:)

关于Delphi 2007 未正确使用 JAX-WS Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/462171/

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