TsgcWSPServer_WAMP › Metodi › CallError
Invia una risposta CALLERROR (tipo messaggio 4) al chiamante quando la procedura remota non ha potuto essere eseguita o è terminata senza successo.
procedure CallError(const aCallId, aErrorURI, aErrorDesc: String; const aErrorDetails: String = '');
| Nome | Tipo | Descrizione |
|---|---|---|
aCallId | const String | Identificatore generato dal client quando ha originariamente invocato la procedura remota; utilizzato per correlare la risposta di errore con la chiamata in attesa. |
aErrorURI | const String | URI (o CURIE) che identifica univocamente la classe di errore, ad esempio http://example.com/error#not_authorized. |
aErrorDesc | const String | Descrizione leggibile dell'errore, utile per la registrazione e il debug. |
aErrorDetails | const String | Payload di errore facoltativo specifico dell'applicazione (ad esempio un oggetto JSON con contesto aggiuntivo). Passare una stringa vuota quando non necessario. |
Invocare CallError dall'interno di un gestore OnCall (tipicamente dal ramo except) quando la RPC non può essere soddisfatta: argomenti non validi, autorizzazione mancante, eccezione interna, timeout, ecc. Il server scrive un frame WAMP CALLERROR [4, CallID, ErrorURI, ErrorDesc, ErrorDetails] al chiamante e rimuove la chiamata dall'elenco in attesa, il che significa che nessun ulteriore CallResult o CallProgressResult può essere inviato per lo stesso aCallId. Se aCallId è sconosciuto (già risposto, annullato o mai registrato), il metodo non esegue nulla.
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;