IndyHTTP-Post get only WDSL in WebBrowser

you can

  • change all interfaces to envlop in all detailled stuff (like __MessageType, __InterfaceName, …)
    or
  • use OnCustomResponseEvent, something like
TMegaDemoServerMainForm = class(TForm)
..
  procedure ROServerCustomResponseEvent(
    const aTransport: IROHTTPTransport; const aRequestStream,
    aResponseStream: TStream; const aResponse: IROHTTPResponse;
    var aHandled: Boolean);

....

procedure TMegaDemoServerMainForm.FormCreate(Sender: TObject);
...
  ROIndyHTTPServer := TROIndyHTTPServer.Create(Self);
  ROIndyHTTPServer.OnCustomResponseEvent := ROServerCustomResponseEvent;  //added

...
procedure TMegaDemoServerMainForm.ROServerCustomResponseEvent(
  const aTransport: IROHTTPTransport; const aRequestStream,
  aResponseStream: TStream; const aResponse: IROHTTPResponse;
  var aHandled: Boolean);
var
  lMessage:  IROMessage;
  op: TROResponseOptions;
  s: ansistring;
begin
  if pos('/xxxx',aTransport.PathInfo) = 1 then begin  // "xxxx" shouldn't be defined in Server.Dispathers
    SetLength(s, aRequestStream.Size);
    aResponseStream.Position := 0;
    aRequestStream.Read(Pointer(s)^, Length(s));
    s := '__MessageType=Message&__InterfaceName=MegaDemoService&'+s;
    aRequestStream.Size := 0;
    aRequestStream.Write(Pointer(s)^, Length(s));

    lMessage:= (ROPOSTMessage as IROMessageCloneable).Clone;
    MainProcessMessage(lMessage,atransport,aRequestStream,aResponseStream,op);
    aHandled := True;
  end;
end;

in this case, .html can pass only __MessageName:

<html><body><form method="POST" action="http://localhost:8099/xxxx">
__MessageName:<input type="text" name="__MessageName" size="45" value="GetServerTime">
<input type="submit">
</form></body></html>