TsgcWSPServer_WAMP › Méthodes › CallError
Envoie une réponse CALLERROR (type de message 4) à l'appelant lorsque la procédure distante n'a pas pu être exécutée ou s'est terminée sans succès.
procedure CallError(const aCallId, aErrorURI, aErrorDesc: String; const aErrorDetails: String = '');
| Nom | Type | Description |
|---|---|---|
aCallId
| const String
| Identifiant généré par le client lorsqu'il a initialement invoqué la procédure distante ; utilisé pour corréler la réponse d'erreur avec l'appel en attente. |
aErrorURI
| const String
| URI (ou CURIE) qui identifie de manière unique la classe d'erreur, par exemple http://example.com/error#not_authorized. |
aErrorDesc | const String
| Description lisible de l'erreur, utile pour la journalisation et le débogage. |
aErrorDetails | const String
| Charge utile d'erreur optionnelle spécifique à l'application (par exemple un objet JSON avec un contexte supplémentaire). Passez une chaîne vide si elle n'est pas nécessaire. |
Invoquez CallError depuis un gestionnaire OnCall (généralement depuis la branche except) lorsque le RPC ne peut pas être exécuté : arguments invalides, autorisation manquante, exception interne, délai d'attente, etc. Le serveur écrit une trame WAMP CALLERROR [4, CallID, ErrorURI, ErrorDesc, ErrorDetails] vers l'appelant et supprime l'appel de la liste en attente, ce qui signifie qu'aucun autre CallResult ou CallProgressResult ne peut être envoyé pour le même aCallId. Si aCallId est inconnu (déjà répondu, annulé ou jamais enregistré), la méthode ne fait rien.
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;