You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

[ |../../../index.htm#lansa/webserviceseng01_0340.htm]
現在地: Webサービス > Webサービスの利用 > チュートリアル 3 - Web サービスを利用した .NET との相互運用性 > サービス呼び出し後のエラー・メッセージを取得

サービス呼び出し後のエラー・メッセージを取得

ここまでの「ユーザー認証」の実装で、必要となる機能は果たされます。ただし、何かの問題がありエラーが発生した場合、その内容までは分かりません。ですから、.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
    次は: ユーザー認証メソッドを調整してユーザー HTTP 応答の呼び出しステータスを読み込む
    [ |../../../index.htm#lansa/webserviceseng01_0340.htm]
  • No labels