如何在OnBeforeExecuteEvent中将THTTPRio.Converter.Options设置为soLiteralParams

时间:2011-09-24 17:04:00

标签: delphi soap delphi-7

这是指帖子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,我不确定它是否正确。

2 个答案:

答案 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枚举。我不知道是否将此文件复制到与我的项目文件相同的文件夹中,并在“使用”部分中引用它是正确的方法,但它工作正常。