I\'ve imported some wsdl for a project. i want to change the SoapRequest on HttpRio onBeforeExecute event, but as i changed the request, im getting some errors how can i cha
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]);
**SOAPRequest.Postion:=0**;// i forget this here, as i write the code that worked
sTmp.SaveToStream(SOAPRequest);
// blaa blaa...
end;
Possible enhancement... I found, with my situation (and this was in the soap response, btw, in case it matters), that if the resulting request is shorter than the original (and in your case it is), there was crud left over when the new string is written back out to the stream.
ex:
original: <blablaa some stuff>
intended: <bla some stuff>
actual: <bla some stuff>uff>
Fix:
SOAPRequest.Postion:=0;// i forget this here, as i write the code that worked
SOAPRequest.size := length(sTmp.Text); // Important - set new length before saving.
sTmp.SaveToStream(SOAPRequest);