如何在没有HTTP的情况下在Delphi中创建和处理SOAP请求?

时间:2009-12-12 13:28:19

标签: delphi soap smtp jms amqp

是否有推荐的方法/教程,说明如何在没有THTTPRio的情况下使用Delphi创建和处理普通SOAP请求,例如,如果我想实现SOAP over JMSSOAP 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响应,并准备好发送给客户端。

1 个答案:

答案 0 :(得分:4)

查看TLinkedRIO类(http://shenoyatwork.blogspot.com/2004/10/using-tlinkedrio.html)。它创建SOAP请求并将其写入文件。由于TLinkedRIO用于测试目的,它还包含用于查找实现服务的(Delphi)服务器的代码,并让服务器从文件中读取请求,处理它并将响应写入另一个文件。然后,调用者(客户端)从响应文件中读取。如果您想使用不同的传输,则不必执行此操作:响应将来自真正的服务。但是,这是一个很好的例子来说明XML序列化是如何与传输分开的。

PS:SOAP序列化基本上需要IWebNode来满足其传输需求。即该接口的Execute方法。您发送请求流的方式/位置以及获取响应流的方式/位置取决于传输实现。