加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – THttprio onBeforeExecute更改soapRequest

发布时间:2020-12-15 09:22:11 所属栏目:大数据 来源:网络整理
导读:我为项目导入了一些wsdl. 我想在HttpRio onBeforeExecute事件上更改SoapRequest,但是 因为我更改了请求,我得到一些错误如何更改请求xml文件 在此事件中使用stringReplace函数. 我试图改变流的大小,我改变了编码等,但无论如何它没有工作. 例 procedure TForm1
我为项目导入了一些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:= length(sTmp.Text); //重要 – 保存前设置新长度.sTmp.SaveToStream(SOAPRequest);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读