是否有推荐的方法/教程,说明如何在没有THTTPRio的情况下使用Delphi创建和处理普通SOAP请求,例如,如果我想实现SOAP over JMS,SOAP over AMQP或{{3} }?
简化的代码示例:
// create a SOAP request (client side)
RequestXML := Service.Add(Arg1, Arg2);
此代码将生成带有SOAP消息的XML,用于带有参数Arg1和Arg2的“Add”方法调用。
// process a SOAP request (server side)
ResponseXML := Service.ProcessRequest(RequestXML);
此代码将获取SOAP请求XML并调用该方法。方法调用的结果将被包装为SOAP响应,并准备好发送给客户端。
答案 0 :(得分:4)
查看TLinkedRIO类(http://shenoyatwork.blogspot.com/2004/10/using-tlinkedrio.html)。它创建SOAP请求并将其写入文件。由于TLinkedRIO用于测试目的,它还包含用于查找实现服务的(Delphi)服务器的代码,并让服务器从文件中读取请求,处理它并将响应写入另一个文件。然后,调用者(客户端)从响应文件中读取。如果您想使用不同的传输,则不必执行此操作:响应将来自真正的服务。但是,这是一个很好的例子来说明XML序列化是如何与传输分开的。
PS:SOAP序列化基本上需要IWebNode来满足其传输需求。即该接口的Execute方法。您发送请求流的方式/位置以及获取响应流的方式/位置取决于传输实现。