在delphi中添加Soap头
我需要将此标头添加到用delphi编写的webservices客户端,因为服务器拒绝该请求:在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
<!--<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;