procedure TMegaDemoService.RORemoteDataModuleGetDispatchInfo(const aTransport: IROTransport;
const aMessage: IROMessage);
var
k: IXMLNode;
soap: IROSOAPMEssage;
begin
if Supports(aMessage, IROSOAPMEssage, soap) then begin
k := soap.HeaderNode;
// do something
end;
end;
However, how can we update the WSDL in our server so that the client that implements the WSDL is aware that the username and password are required in the header?
so do you want to send username&password at each client request?
we send ROClientIDHeader tag that specifies client session if on server-side by default in ROD
Yes, the client would send user-id/password on each request in the header. The customer of this API cannot handle session tracking on their side, so they don’t want/can’t use the ROClientIDHeader.
The service is working for them if they manually modify the header on their side, but they would like the .Net importer to parse the WSDL and create the header class for them.
We have already tried the suggested solution of using OnEnvelopeComplete to adjust the outgoing WSDL. The problem is OnEnvelopeComplete doesn’t fire on the server when a client requests the WSDL. After looking through the TROSOAPMessage object, it looks like the GetModuleInfo method is responsible for converting the RODL spec into a WSDL spec. We haven’t been to find an event that lets us manipulate the WSDL content before it is sent back in a response.