TsgcWSPServer_WAMP메서드 › CallError

CallError 메서드

원격 프로시저를 실행할 수 없었거나 성공적으로 완료되지 않았을 때 호출자에게 CALLERROR 응답(메시지 유형 4)을 보냅니다.

구문

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

Parameters

NameType설명
aCallIdconst String클라이언트가 원래 원격 프로시저를 호출할 때 생성한 식별자입니다. 보류 중인 호출과 오류 응답을 연관시키는 데 사용됩니다.
aErrorURIconst String오류 클래스를 고유하게 식별하는 URI(또는 CURIE)입니다(예: http://example.com/error#not_authorized).
aErrorDescconst String오류에 대한 사람이 읽을 수 있는 설명으로, 로깅 및 디버깅에 유용합니다.
aErrorDetailsconst String선택적 애플리케이션별 오류 페이로드(예: 추가 컨텍스트가 있는 JSON 객체)입니다. 필요하지 않은 경우 빈 문자열을 전달하십시오.

설명

RPC를 이행할 수 없을 때(잘못된 인수, 권한 부여 누락, 내부 예외, 타임아웃 등) OnCall 핸들러 내부에서(일반적으로 except 분기에서) CallError를 호출하십시오. 서버는 호출자에게 WAMP CALLERROR 프레임 [4, CallID, ErrorURI, ErrorDesc, ErrorDetails]를 작성하고 대기 목록에서 호출을 제거합니다. 즉, 동일한 aCallId에 대해 더 이상 CallResult 또는 CallProgressResult를 보낼 수 없습니다. aCallId가 알 수 없는 경우(이미 응답함, 취소됨 또는 등록되지 않음) 메서드는 아무 작업도 수행하지 않습니다.

예제

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;

메서드로 돌아가기