Project

General

Profile

Web Services Client

The below procedure (with pertinent converted Java within) illustrates the web services capabilities supported by FWD:
  • CREATE SERVER
  • CONNECT(), DISCONNECT()
  • SET-CALLBACK-PROCEDURE() for both request-header and response-header
  • using RUN <service> SET <handle> ON <server> and RUN <service> IN <handle> to execute services
def var h as handle.
def var hp as handle.
def var chi as char.
def var cho as char.
def var ch as char.
def var d as int.

procedure proc0.
   def input param h as handle.
   def input param c1 as char.
   def input param c2 as char.

   if c1 <> "" then message "request callback: incorrect operation namespace".
   if c2 <> "Divide" then message "request callback: incorrect operation local name".

   ch = ch + " response-header-callback".
end.

procedure proc1.
   def output param h as handle.
   def input param c1 as char.
   def input param c2 as char.
   def output param lDelete as log.

   ch = ch +  "request-header-callback".
   lDelete = no.
end.

   public void proc0(final handle _h_1, final character _c1, final character _c2)
   {
      handle h_1 = UndoableFactory.initInput(_h_1);
      character c1 = UndoableFactory.initInput(_c1);
      character c2 = UndoableFactory.initInput(_c2);

      internalProcedure(new Block((Body) () -> 
      {
         if (_isNotEqual(c1, ""))
         {
            message("request callback: incorrect operation namespace");
         }

         if (_isNotEqual(c2, "Divide"))
         {
            message("request callback: incorrect operation local name");
         }

         ch.assign(concat(ch, " response-header-callback"));
      }));
   }
.
.
.
   public void proc1(final handle _h_1, final character _c1, final character _c2, final logical _lDelete)
   {
      handle h_1 = UndoableFactory.initOutput(_h_1);
      character c1 = UndoableFactory.initInput(_c1);
      character c2 = UndoableFactory.initInput(_c2);
      logical lDelete = UndoableFactory.initOutput(_lDelete);

      internalProcedure(new Block((Body) () -> 
      {
         ch.assign(concat(ch, "request-header-callback"));
         lDelete.assign(false);
      }));
   }

create server h.
h:connect("-WSDL http://www.dneonline.com/calculator.asmx?WSDL -Binding CalculatorSoap -SOAPEndpoint http://www.dneonline.com/calculator.asmx").

run CalculatorSoap set hp on server h.
hp:set-callback-procedure("response-header", "proc0").
hp:set-callback-procedure("request-header", "proc1").

run Divide in hp(10, 2, output d).
if ch <> "request-header-callback response-header-callback"  then message "callbacks call errors: " ch.
message d.
h:disconnect()

   public void execute()
   {
      externalProcedure(CallbackDivide.this, new Block((Body) () -> 
      {
         ServerFactory.createServer(h);
         h.unwrapConnectable().connect(new character("-WSDL http://www.dneonline.com/calculator.asmx?WSDL -Binding CalculatorSoap -SOAPEndpoint http://www.dneonline.com/calculator.asmx"));
         ControlFlowOps.invokeRemote("CalculatorSoap", hp, h, false);
         hp.unwrapCallbackProcedure().setCallbackProcedure("response-header", "proc0");
         hp.unwrapCallbackProcedure().setCallbackProcedure("request-header", "proc1");
         ControlFlowOps.invokeInWithMode("Divide", hp, "IIO", new integer(10), new integer(2), d);

         if (_isNotEqual(ch, "request-header-callback response-header-callback"))
         {
            message(new Object[]
            {
               "callbacks call errors: ",
               ch
            });
         }

         message(d);
         h.unwrapConnectable().disconnect();
      }));
   }

© 2004-2022 Golden Code Development Corporation. ALL RIGHTS RESERVED.