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 bothrequest-header
andresponse-header
- using
RUN <service> SET <handle> ON <server>
andRUN <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.