THttprio onBeforeExecute changing the soapRequest

前端 未结 2 564
南笙
南笙 2021-01-06 07:51

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

相关标签:
2条回答
  • 2021-01-06 08:29
    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;
    
    0 讨论(0)
  • 2021-01-06 08:31

    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);

    0 讨论(0)
提交回复
热议问题