我已经为项目导入了一些wsdl。
我想更改HttpRio onBeforeExecute事件上的SoapRequest,但是
当我更改请求时,即时通讯收到一些错误,我该如何更改请求xml文件
在此事件上使用stringReplace函数。
我试图更改流的大小,更改了编码等,但是无论如何都没有用。
例
procedure TForm1.RiomBeforeExecute(const MethodName: string; SOAPRequest: TStream);
var
sTmp : TStringList;
begin
sTmp:=TStringList.Create;
SOAPRequest.Position := 0;
sTmp.LoadFromStream(SOAPRequest);
sTmp.Text := StringReplace(sTmp.Text,'blablaa','bla',[RfReplaceAll]);
sTmp.SaveToStream(SOAPRequest);
// blaa blaa...
end;
最佳答案
可能的增强...我发现,就我的情况而定(如果有问题,这是在肥皂响应中,顺便说一句),如果结果请求短于原始请求(就您的情况而言),那就很麻烦新字符串写回到流中时剩下的。
例如:
original: <blablaa some stuff>
intended: <bla some stuff>
actual: <bla some stuff>uff>
固定:
SOAPRequest.Postion:= 0; //我在写这段有效的代码时在这里忘记了
SOAPRequest.size:=长度(sTmp.Text); //重要-保存前设置新的长度。
sTmp.SaveToStream(SOAPRequest);