这是指帖子Delphi SOAP Envelope and WCF。
有人可以发一个示例代码,它可以告诉我如何在Delphi 7中的THTTPRio.Converter.Options中设置soLiteralParams。我目前有以下代码。
我已将HTTPRIO组件拖放到文档中,该文档在代码开头创建了一行HTTPRIO1:THTTPRIO。我基本上想了解如何在上面的组件中设置soLiteralParams。以下是我试图执行的代码,它给了我错误。
procedure TForm1.CleanUpSOAP(const MethodName: String; var SOAPRequest: WideString);
var RIO: THTTPRIO;
begin
//The following line is giving error
// RIO.Converter.options := [soLiteralParams];
end;
在上面的代码中,我已经声明了THTTPRIO类型的变量RIO,我不确定它是否正确。
答案 0 :(得分:2)
猜猜,因为你在问题中提供的信息非常少。
使用分配给您在表单上放置的组件的变量。不要声明一个新的本地(无论如何你从未创建过)。要在代码中设置Converter.Options
,您需要在使用条款中添加OPToSOAPDomConv
。
implementation
uses
OPToSOAPDomConv;
// BTW, this name might not be a good one if it's the
// OnBeforeExecute event handler as that isn't
// clear from the name.
procedure TForm1.CleanUpSOAP(const MethodName: String; var SOAPRequest: WideString);
begin
// Note this clears any previous options!
HTTPRIO1.Converter.Options := [soLiteralParams];
// If you want to keep the previous options instead of replacing them
// HTTPRIO1.Converter1.Options := HTTPRIO1.Converter1.Options + [soLiteralParams];
end;
如果你已经删除了表单上的组件,我不知道你为什么不在Object Inspector中处理它。不过。
如果这不能解决问题,请编辑您的问题并提供您收到的确切错误消息,包括在引发异常的情况下的任何内存地址。
答案 1 :(得分:1)
我已经解决了这个问题。问题是我没有引用OPconvert.pas文件,其中包含TSOAPConvertOption枚举。我不知道是否将此文件复制到与我的项目文件相同的文件夹中,并在“使用”部分中引用它是正确的方法,但它工作正常。