TsgcWSPServer_WAMPMethods › CallError

CallError Methode

Sendet eine CALLERROR-Antwort (Nachrichtentyp 4) an den Aufrufer, wenn die Remote-Prozedur nicht ausgeführt werden konnte oder erfolglos beendet wurde.

Syntax

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

Parameter

NameTypBeschreibung
aCallIdconst StringVom Client generierter Bezeichner, als er ursprünglich die Remote-Prozedur aufgerufen hat; wird verwendet, um die Fehlerantwort mit dem ausstehenden Aufruf zu korrelieren.
aErrorURIconst StringURI (oder CURIE), die die Fehlerklasse eindeutig identifiziert, zum Beispiel http://example.com/error#not_authorized.
aErrorDescconst StringMenschenlesbare Beschreibung des Fehlers, nützlich für Logging und Debugging.
aErrorDetailsconst StringOptionale anwendungsspezifische Fehler-Payload (zum Beispiel ein JSON-Objekt mit zusätzlichem Kontext). Übergeben Sie eine leere Zeichenfolge, wenn sie nicht benötigt wird.

Hinweise

Rufen Sie CallError aus einem OnCall-Handler heraus auf (typischerweise aus dem except-Zweig), wenn der RPC nicht erfüllt werden kann: ungültige Argumente, fehlende Autorisierung, interne Ausnahme, Timeout usw. Der Server schreibt einen WAMP-CALLERROR-Frame [4, CallID, ErrorURI, ErrorDesc, ErrorDetails] an den Aufrufer und entfernt den Aufruf aus der Pending-Liste, was bedeutet, dass kein weiteres CallResult oder CallProgressResult für dieselbe aCallId gesendet werden kann. Wenn aCallId unbekannt ist (bereits beantwortet, abgebrochen oder nie registriert), tut die Methode nichts.

Beispiel

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;

Zurück zu Methoden