ここまでの「ユーザー認証」の実装で、必要となる機能は果たされます。ただし、何かの問題がありエラーが発生した場合、その内容までは分かりません。ですから、.NET コードからエラー・メッセージを取り出すコードを追加してみましょう。
.NET コードはコピー処理の最後に、今回の呼び出しの状態を示す JSON オブジェクトを送信します。今後独自のサービスを作成する際も、今回と同じ形式を取るようにしてください。ステータスには次の 2 つの値があります。
呼び出しのステータスを表示するための再利用可能パーツ ExternalServiceInvocationStatus を作成します。この再利用可能パーツは、すべてのサービスで利用します。
この再利用可能パーツはチュートリアル 2 で作成したものと同じものです。ですから、すでにチュートリアル 2 を終了していれば、この再利用可能パーツは作成されいます。その場合は、以下を飛ばして次のセクションに進んでください。
この新規再利用可能パーツに次のコードを入れます。
Function Options(*DIRECT)
Begin_Com Role(*EXTENDS #PRIM_OBJT)
* OK & ErrorMessage 値を保持する変数
Define_Com Class(#PRIM_BOLN) Name(#gOK)
Define_Com Class(#PRIM_DC.UnicodeString) Name(#gErrorMessage)
* プロパティ: OK & ErrorMessage
Define_Pty Name(OK) Get(*AUTO #gOK) Set(*AUTO #gOK)
Define_Pty Name(ErrorMessage) Get(*AUTO #gErrorMessage) Set(*AUTO #gErrorMessage)
* OK ステータス & エラー・メッセージを HTTP 応答オブジェクトから読み込むルーチン
Mthroutine Name(FromHttpResponse)
Define_Map For(*INPUT) Class(#XPRIM_HttpResponse) Name(#HttpResponse) Pass(*BY_REFERENCE)
Define_Com Class(#XPRIM_RandomAccessJsonReader) Name(#Json)
* プロパティ初期化
#gOK := False
#gErrorMessage := ''
* 応答があるかどうか確認…
If (#HttpResponse.IsSuccessfulRequest)
* 応答 JSON の読み込み
#Json.SetSourceHttpResponse HttpResponse(#HttpResponse)
* 要求が OK ステータス・コードを返したかどうか確認
If (#HttpResponse.IsSuccessHttpStatusCode)
#gOK := True
Else
* JSON 応答からエラー・メッセージを読み込む
#gErrorMessage := #Json.ReadStringWithName( 'errorMessage' )
Endif
Else
#gErrorMessage := #HttpResponse.ErrorMessage
Endif
Endroutine
End_Com