在delphi中添加Soap头

在delphi中添加Soap头,delphi,Delphi,我需要将此标头添加到用delphi编写的webservices客户端,因为服务器拒绝该请求: <!--<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <To soap:mustUnderstand="1" xmlns="http://www.w3.org/2005/08/addressing">http://srvweh01:8081/ISPWebService/IspOrderWs

我需要将此标头添加到用delphi编写的webservices客户端,因为服务器拒绝该请求:

 <!--<soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing">
  <To soap:mustUnderstand="1" xmlns="http://www.w3.org/2005/08/addressing">http://srvweh01:8081/ISPWebService/IspOrderWs.svc</To>
 </soap:Header>-->
这是我对服务器的呼叫:

getIspOrderWs().addOrder(pipport)

因此,我的问题是:如何在调用之前插入丢失的头(以及正确的方法),以便能够很好地编译SOAP消息

所有建议都是受欢迎的,
谢谢

你可以找一些建议……:)我已经成功地使用了httpriobeforecute事件,并在那里修改了SOAPRequest参数。您是如何完成的??我发现使用TStream对象有一些严重的困难…@whosr爸爸:谢谢!不管怎么说,在我的情况下,我没有得到拳头的运气。。。我已经与wireshark进行了检查,以获取xml,但我看不到标题部分…两个涉及解决方案的类TSOAPHeader,返回给我一个错误:ESOAPDomConvertError:不支持从类TValueDataImpl到SOAP的转换-SOAP类必须派生自TRemotable。还有其他建议吗??
function GetIspOrderWs(UseWSDL: Boolean; Addr: string; HTTPRIO: THTTPRIO): IspOrderWs;
const
  defWSDL = 'C:\Sources\SoapClientXWEH\IspOrderWs.xml';
  defURL  = 'http://srvweh01:8081/ISPWebService/IspOrderWs.svc';
  defSvc  = 'IspOrderWs';
  defPrt  = 'WSHttpBinding_IspOrderWs';
var
  RIO: THTTPRIO;
begin

  Result := nil;
  if (Addr = '') then
  begin
    if UseWSDL then
      Addr := defWSDL
    else
      Addr := defURL;
  end;
  if HTTPRIO = nil then
    RIO := THTTPRIO.Create(nil)
  else
    RIO := HTTPRIO;
  try
    Result := (RIO as IspOrderWs);
    if UseWSDL then
    begin
      RIO.WSDLLocation := Addr;
      RIO.Service := defSvc;
      RIO.Port := defPrt;
    end else
      RIO.URL := Addr;
  finally
    if (Result = nil) and (HTTPRIO = nil) then
      RIO.Free;
  end;
end;