Delphi 2005 Web 服务问题

2024-05-24

我在尝试通过 Delphi 访问 Web 服务时遇到问题。我使用了 2007 版 WSDLimp 工具的 java WSDL,看起来它已正确创建了所有对象。然而,当我制作一个调用该服务的测试程序时,每个对象都是空的。如果我在 HTTPRIOAfterExecute 方法中转储 SOAPResponse 对象,我可以看到我已经返回了一个格式正确的 XML Soap 数据包,其中包含我期望的所有数据,但我无法通过对象访问它。那么我缺少什么吗?


Web 服务响应包含每个属性的别名命名空间。这些别名未在 WSDL 中定义。例如,WSDL 包含命名空间“http://www.example.com/SomeService http://www.example.com/SomeService" 并且请求别名在顶级节点中动态为 xmlns:ns3="http://www.example.com/SomeService"。因此响应中的属性看起来像 ns3:somePropertyName="[value] ”。

在 OPToSOAPDomConv 单元中的 TSOAPDomConv.InitObjectFromSOAP 中,它尝试查找不带名称空间前缀的属性名称。这导致查找失败并且对象属性留空。即使使用 2007 年的源文件也会发生这种情况。

我能看到的最好的解决方法是修改 InitObjectFromSOAP 例程。

在第 4181 行周围添加:

  RemTypeRegistry.InfoToURI(PropList[i].PropType^, NS, PropName, IsScalar);

并更改 AttrNode.HasAttribute 以将 NS 变量作为第二个参数传递,如下所示:

  if AttrNode.HasAttribute(ExternalPropName, NS) then

另外,下面几行是 SetObjectPropFromText 调用。最后一个参数是属性值,您需要将 Attr.Attributes[ExternalPropName] 更改为

SetObjectPropFromText(Instance, PropList[I], AttrNode.GetAttributeNS(ExternalPropName, NS))

当然还要声明 NS、PropName 和 IsScalar 变量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Delphi 2005 Web 服务问题 的相关文章

  • 使用 gmail 和 Indy 发送电子邮件

    我正在尝试使用 gmail 从 Delphi 发送电子邮件 我有 Indy 10 5 9 0 和 Delphi XE3 我从以下位置获得了示例代码 http www andrecelestino com delphi xe envio de
  • 是否有适用于 >= Delphi 2007 的 Delphi 混淆器

    我曾经使用 Pythia 来混淆我的 D6 程序 但 Pythia 似乎不再适用于我的 D2007 这是 Pythia 的链接 自 2007 年初以来没有更新 http www the interweb com serendipity in
  • 使用返回哈希数组的外部 PHP SOAP Web 服务的 C# .NET 客户端存在问题

    我正在编写一个需要调用外部 Web 服务的 NET Web 应用程序 我提供的文档包括 PHP 代码示例 我可以使用提供给我的 WSDL 地址在 VS2010 中成功创建 Web 引用 并且使用 fiddler 我可以看到正在发送和接收预期
  • 在 Inno Setup 中使用 StringToColor

    我想为表单上的标签 TNewStaticText 属性颜色 TColor 读写 分配一些颜色 我将颜色存储为 RRGGBB 字符串 我想使用 Delphi 函数 StringToColor 将其转换为 TColor 但如果我在脚本中使用此函
  • 创建FileStream时如何处理异常

    我有一个这样的函数 我想重构它 function Myfunction sUrl sFile String Boolean var GetData TFileStream begin Result False if the line bel
  • 是否可以将 WSDL 与 REST Web 服务结合使用?

    我是网络服务领域的新手 是否可以将 WSDL 与 REST 绑定一起使用 或者我应该使用 WADL 可以将 WSDL 与 REST 绑定一起使用 但这实际上没有必要 REST 的简单性使得编写代码来使用该服务变得非常容易 使用 WSDL 只
  • Delphi 7,加载PNG到TImage

    只是想加载 PNG 尝试使用适用于其他格式的 OleGraphic 来使用我的 LoadPic 但在 PNG 上失败 目标是将图像复制到隐藏位图 然后将其屏蔽并复制到可见的工作图像画布 如果 CopyRect 不这样做 请随意提出其他建议
  • VCL.位图到 FMX.位图

    我在网上找到了这段代码 但 FMX Bitmap 没有扫描线 是否可以以某种方式将 VCL TBitmap 复制或绘制到 FMX Bitmap IFDEF MSWINDOWS type TBitmap FMX Types TBitmap T
  • delphi 变量值在循环中的线程中发生变化

    我的代码正在运行一个 for 循环来处理一些数据 如下所示 procedure printValue Value Integer begin TThread Synchronize TThread Current procedure beg
  • 如何在滚动框上创建缓慢的滚动效果?

    我喜欢在滚动框中平移图像后创建平滑的减慢滚动效果 就像平移地图一样谷歌地图 http maps google com 我不确定它是什么类型 但行为完全相同 当快速移动地图时 当您释放鼠标时它不会立即停止 而是开始减慢速度 有什么想法 组件
  • 在运行时按需更改组件类

    我的问题与这里的想法类似 替换delphi中的组件类 https stackoverflow com q 4685863 937125 但我需要改变一个specific按需组件类 这是一些伪演示代码 unit Unit1 TForm1 cl
  • 我可以让我的 Delphi 应用程序在特定时间(例如上午 12:00)启动,而不运行应用程序吗?

    我看到一个已安装的应用程序 它从供应商的网站提供一些 XML 数据并将其显示在主窗体窗口中 我想这很简单 但我注意到 即使我关闭系统托盘中的应用程序 明天早上 上午 12 00 正好 它也会再次弹出 这太酷了 我不确定它是用 Delphi
  • 如何根据输入的内容过滤组合框的内容?

    我们有一个包含 100 多个项目的组合框 当我们在组合框中输入字符时 我们想要过滤掉项目 例如 如果我们输入 ac 并单击下拉选项 那么我们希望它仅显示以 ac 开头的项目 我怎样才能做到这一点 也许您会更喜欢使用操作系统内置的自动完成功能
  • suds.TypeNotFound:找不到类型:'(,http://www.w3.org/2001/XMLSchema,)'

    我正在使用网络服务 但以下错误阻止我使其正常工作 Traceback most recent call last File C Users Marnik Documents GitHub prjct CompareSiteCrawler s
  • 如何将 REST API 与 FireMonkey 结合使用?

    我需要在 FireMonkey 中实现 REST API 来获取一些信息 但我不确定如何做到这一点 REST API使用OAuth2 我可以访问两个代码 Consumer Key和Consumer Secret 之后 我需要获得一个临时的
  • 如何仅使用 TADOQuery 组件将图像插入数据库

    我有一个简单的基本问题 我正在尝试使用将图像插入数据库Insert与其他列值的语句也使用TADOQuery成分 由于代码已经由某人编写 因此我想在此处放置一些虚拟示例代码 以供您澄清相应的步骤 请注意 这可以正常工作TQuery组件 因为我
  • 通过 https 负载均衡器的 WCF http 服务

    我有一个可以通过 http 端点访问的 WCF Web 服务 现在 该服务应通过 https 与负载均衡器一起发布 客户端是通过 svcutil exe 在 Net 中创建的 但 Java 客户端也需要 WSDL 我的理解是 Web 服务在
  • Word 2010 自动化:“转到书签”

    我有一个用 Delphi 7 编写的程序 它打开一个基于模板的新 Word 文档 文档打开后 系统会自动跳转到书签 在模板中预定义 并在其中添加一些文本 以下代码在 Word 2003 中工作正常 但会导致invalid variant o
  • 当responseText包含有效的Xml时,IXMLHttpRequest.responseXml为空,没有解析错误

    我正在从中获取一些 XML政府网站 http www bankofcanada ca stats assets rates rss noon en all xml http www bankofcanada ca stats assets
  • 石和磅的格式正确吗?

    我有一个图表 用于显示重量 以英石和磅 lbs 为单位 该图表由记录中的数据填充 对于权重 数据类型为 Double 记录数据是在运行时编辑的 我需要知道一种正确格式化输入数据的方法 为了更好地理解 首先看一下这些示例值 它们表示为石和磅

随机推荐