所有
我面临着来自delphi的SOAP请求的奇怪问题,它正在运行,但它没有给出预期的结果。所以我已经开始使用SOAP UI进行调试,我发现了下面的观察结果。
当我使用SOAP UI工具时,我尝试创建新请求并使用下面的标题创建它但是它没有按预期工作(当我从delphi发送请求时遇到同样的问题)。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/">
但是如果我在SOAP UI请求中将标题更改为下面,则会给出预期结果。
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tem="http://tempuri.org/" xmlns:acc="http://schemas.datacontract.org/2004/07/AccountService.DataContracts" xmlns:acc1="http://schemas.datacontract.org/2004/07/AccountService.FaultContracts">
如何在delphi 2010中将标题更改为HTTPRIO对象?
答案 0 :(得分:2)
一种可能性是修改青少年request
对象的OnBeforeExecute
事件处理程序中的THTTPRIO
。
如下所示:
procedure TForm1.RIOBeforeExecute(const MethodName: string; SOAPRequest: TStream);
var
sl : TStringList;
begin
SOAPRequest.Position := 0;
sl := TStringList.Create;
try
sl.LoadFromStream(SOAPRequest);
sl.Text := StringReplace(sl.Text, 'old header text', 'new header text', [rfReplaceAll]);
SOAPRequest.Size := 0;
SOAPRequest.Position := 0;
sl.SaveToStream(SOAPRequest);
finally
sl.Free;
end;
end;