Delphi7 WCF方法输入参数

2024-01-07

我有 wcf web 服务(basicHttpBinding)。我们的Delphi7客户端无法正确使用它。 我已经使用 WCF 附加功能简化了 WSDL。好的。 Delphi7 wsdl 导入器生成代理正确。

现在我遇到了输入参数的问题。它们总是有默认值(字符串为空,int 为 0)。

delphi7 方法的输出值正常。 例如:

        public string Test(string a)
        {
              return "Test"+a;
        }

此方法始终返回“Test”。我的日志系统修复了 at 方法为空的问题,因此问题是正确传输输入参数。

我不明白出了什么问题

EDIT

proxy:

ISyncer = interface(IInvokable)
  ['{D46862B0-BDD3-8B80-35A8-A2AC69F24713}']
    function  Test(const a: String): String; stdcall;
  end;

call:

Sync:=(dmMain.HTTPRIO1 as ISyncer);
test:=Sync.Test('5555');

dmMain.HTTPRIO1 有 soLiteralParams 选项:

init:

InvRegistry.RegisterInvokeOptions(TypeInfo(ISyncer), ioLiteral);

通话后我收到异常消息:

Error deserializtion message body for operation Test. 
Operation formatter detects ivalid message body. Expecting node type "Element"
with name "Test" and namespace "http://tempuri.org". Actually node type "Element"
with name "xsd:String" and namespace "http://w3.org/2001/XMLSchema"

wsdl 片段:

<xsd:element name="Test">
−
<xsd:complexType>
−
<xsd:sequence>
<xsd:element minOccurs="0" name="a" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
−
<xsd:element name="TestResponse">
−
<xsd:complexType>
−
<xsd:sequence>
<xsd:element minOccurs="0" name="TestResult" nillable="true" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>

EDIT2

我研究http请求:

.NET

<Test> xmlns="http://tempuri.org/"><a>5555</a></Test>

工作正常;

Delph7

<Test xmlns="http://tempuri.org/"><xsd:a>5555</xsd:a></Test>

输入参数为空。 问题出在前缀上xsd


Delphi 使用 RPC/Encoded SOAP,而 WCF 使用 Document/Literal/Wrapped SOAP。所以你需要告诉Delphi使用相同的格式。您可以通过指定来做到这一点soLiteralParams in the THttpRio.Converter.Options.

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

Delphi7 WCF方法输入参数 的相关文章

随机推荐

  • 在 OpenGL 中,仅使用 OpenGL3+ 方法创建透视图的最简单方法是什么?

    乍一看这可能听起来很懒 但我已经研究了两天了 我有一个绘制图元的 SDL GLEW 应用程序 我想以不同的视角制作一些视口 我看到了四个视口 但无法更改视角 假设你有 draw swapbuffers 在 OpenGL3 规范中 创建透视视
  • Python @property.setter

    创建装饰器的基本方法是 def my decorator f def f args kwargs do something using f pass return f my decorator def f 但这样你就不能定义像这样的装饰器
  • 如何将 ThreadPool.QueueUserWorkItem 与非静态方法一起使用?

    当我尝试编译时它给了我 错误 1 非静态字段 方法或属性 ConsoleApplication1 Program print string 需要对象引用 ConsoleApplication1 ConsoleApplication1 Pro
  • Httpclient 4.0.3 随机挂起的多个帖子

    让我解释一下情况 我有一个 servlet 将传出 GET POST 重定向到另一个域 某种代理 上的另一个项目 其工作是处理它并返回一些内容 参数和 gif 我使用 HttpClient 4 0 3 来执行此操作 我的应用程序在启动时发送
  • 仅对非空列进行唯一约束

    在MS SQL Server 2008中 是否可以定义UNIQUE CONSTRAINT在列上 但如果非空值则检查 IF 和 ONLY IF 也就是说 会有很多 NULL 应该被忽略 然而 对于非空值 它应该是唯一的 你需要创建一个过滤索引
  • 将基于 json 的日志转换为列格式,即每列一个文件

    日志文件示例 timestamp 2022 01 14T00 12 21 000 Field1 10 Field Doc f1 0 timestamp 2022 01 18T00 15 51 000 Field Doc f1 0 f2 1
  • Go:一个频道有多个听众

    我对 Go 还很陌生 如果主题错误 我很抱歉 但我希望你能理解我的问题 我想通过通道将事件处理到不同的 go 例程 这是一些示例代码 type Event struct Host string Command string Output s
  • 将一个旋转对象包含在另一个旋转对象中 FabricJS

    我有两个对象 一个父对象 红色 和一个子对象 蓝色 父对象是固定的 不能移动 只有子对象是可移动的 并且子对象总是比父对象大 无论以何种方式移动子对象 它都应该始终包含在子对象内部 这意味着我们永远不应该看到红色矩形 Demo https
  • Kotlin 具体化类型参数不支持智能转换

    我正在尝试设置未初始化的值 并试图让以下内容发挥作用 这主要是对具体化泛型的力量 和局限性 的好奇 我试图为数据类的可选参数提供默认值 inline fun
  • 如何将列宽度固定的 LaTeX 表格的单元格内容居中?

    考虑下面的 LaTeX 代码 begin tabular p 1in p 1in A B C D end tabular 如何使每个单元格的内容在单元格的中心而不是左侧对齐 请注意 我想确保列的宽度是固定的 因此我无法使用 c 位置属性而不
  • 使用 Linq/Lambda 将 DataTable 转换为字典

    我有一个 DataTable 我想将其转换为 C 项目中的字典 我可以使用传统的编程方式来实现目标 但它不如使用 linq lambda 那么优雅 我尝试使用 Lambda 但我陷入了如何将多行展平为 1 行的困境 我有一个用于测试目的的模
  • 在迭代列表时更改列表的最佳方法[重复]

    这个问题在这里已经有答案了 我在 python 脚本 v2 6 中有几个实例 我需要就地修改列表 我需要从列表中弹出值以响应用户的交互式输入 并且想知道执行此操作的最干净的方法 目前 我有非常肮脏的解决方案 a 将列表中我想要删除的项目设置
  • Java RMI 和同步方法

    我正在研究 分布式系统 Tanenbaum 和 Van Steen 所著 一书 他们所说的内容似乎与许多人对 Java RMI 和同步方法的看法相冲突 我的想法是使用同步方法在远程对象实现 因此在服务器上运行的实际实现 上 即使对该方法的调
  • EF6 使用命令树拦截器禁用查询计划缓存

    我在用着IDbCommandTreeInterceptor实现软删除功能 内部标准TreeCreated方法我检查给定的查询命令是否包含具有软删除属性的模型 如果他们这样做并且用户也请求获取软删除对象 我用以下命令调用我的软删除访问者que
  • 检测 Tomcat 中领域身份验证失败的原因

    我为 Tomcat 7 编写了一个自定义 Realm 我将其包装在 Tomcat 默认安装提供的锁定 Realm 中 锁定功能工作正常 但在我的 web xml 中 我有
  • 为什么我会收到源工具包服务终止错误? [复制]

    这个问题在这里已经有答案了 第二行有问题 什么 let modelURL NSBundle mainBundle URLForResource xxx withExtension momd let managedObjectModel NS
  • UITableView 重复 Firebase 数据

    我从 Firebase 收到重复的内容 但我似乎无法弄清楚我做错了什么 在 firebase 我有 6 个帖子 表格视图填充了 6 个单元格 但所有 6 个单元格都具有相同的数据 而其他 5 个帖子不存在 UITableViewCell t
  • 将键值列表转换为数据框

    我在 R 中有一个名为 国家 的键 值列表 print country CAM 1 5 TJK 1 1 SEN 1 7 键是一个国家的名称和该国家出现的值 我想将此列表转换为数据框 如下所示 country occurence 0 CAM
  • 为 Django Oscar 存储信用/虚拟货币应用程序?

    我希望为存储虚拟货币的客户建立一个商店信用模型 此商店信用应用程序将存储可用于支付产品费用的积分 在退货或某些方案中添加 是django oscar 账户 https github com django oscar django oscar
  • Delphi7 WCF方法输入参数

    我有 wcf web 服务 basicHttpBinding 我们的Delphi7客户端无法正确使用它 我已经使用 WCF 附加功能简化了 WSDL 好的 Delphi7 wsdl 导入器生成代理正确 现在我遇到了输入参数的问题 它们总是有