TsgcWSPServer_WAMPMetodi › CallError

CallError Method

Invia una risposta CALLERROR (tipo messaggio 4) al chiamante quando la procedura remota non ha potuto essere eseguita o è terminata senza successo.

Sintassi

procedure CallError(const aCallId, aErrorURI, aErrorDesc: String; const aErrorDetails: String = '');

Parametri

NomeTipoDescrizione
aCallIdconst StringIdentificatore generato dal client quando ha originariamente invocato la procedura remota; utilizzato per correlare la risposta di errore con la chiamata in attesa.
aErrorURIconst StringURI (o CURIE) che identifica univocamente la classe di errore, ad esempio http://example.com/error#not_authorized.
aErrorDescconst StringDescrizione leggibile dell'errore, utile per la registrazione e il debug.
aErrorDetailsconst StringPayload di errore facoltativo specifico dell'applicazione (ad esempio un oggetto JSON con contesto aggiuntivo). Passare una stringa vuota quando non necessario.

Note

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.

Esempio

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;

Torna ai Metodi