TsgcWSPServer_WAMP › Methoden › CallError
Verzendt een CALLERROR-antwoord (berichttype 4) naar de aanroeper wanneer de externe procedure niet kon worden uitgevoerd of niet succesvol is voltooid.
procedure CallError(const aCallId, aErrorURI, aErrorDesc: String; const aErrorDetails: String = '');
| Naam | Type | Beschrijving |
|---|---|---|
aCallId | const String | Identificator gegenereerd door de client toen het de remote procedure oorspronkelijk aanriep; wordt gebruikt om de foutmelding te correleren met de openstaande aanroep. |
aErrorURI
| const String | URI (of CURIE) die de foutklasse uniek identificeert, bijvoorbeeld http://example.com/error#not_authorized. |
aErrorDesc | const String | Voor mensen leesbare beschrijving van de fout, nuttig voor logging en debugging. |
aErrorDetails | const String | Optionele toepassingsspecifieke foutpayload (bijvoorbeeld een JSON-object met extra context). Geef een lege tekenreeks door wanneer dit niet nodig is. |
Roep CallError aan vanuit een OnCall-handler (doorgaans vanuit de except-branch) wanneer de RPC niet kan worden uitgevoerd: ongeldige argumenten, ontbrekende autorisatie, interne uitzondering, time-out, enz. De server schrijft een WAMP CALLERROR-frame [4, CallID, ErrorURI, ErrorDesc, ErrorDetails] naar de aanroeper en verwijdert de aanroep uit de wachtrij, wat betekent dat er geen verdere CallResult of CallProgressResult kan worden verzonden voor dezelfde aCallId. Als aCallId onbekend is (al beantwoord, geannuleerd of nooit geregistreerd), doet de methode niets.
procedure TForm1.sgcWSPServer_WAMP1Call(Connection: TsgcWSConnection;
const CallId, ProcURI: string; Arguments: TStringList);
begin
try
if ProcURI = 'com.example.divide' then
sgcWSPServer_WAMP1.CallResult(CallId, IntToStr(10 div StrToInt(Arguments[0])));
except
on E: Exception do
sgcWSPServer_WAMP1.CallError(CallId,
'http://example.com/error#invalid_argument', E.Message, '');
end;
end;