3-3 API利用の準備

参照設定

Webサービス版RDE UDKのAPIを利用するには、Visual Studioのソリューションエクスプローラーから、[サービス参照の追加]で本サービスに接続します。
参照先URLは次を指定します。

http://<サーバー名>:<ポート番号>/UdkWS/UdkService?wsdl

セッションの利用

サーバー側(Webサービス)では、クライアント側(.NET)のログイン情報を保持するためにセッションを利用します。このためクライアント側ではWebサービス定義時に生成される構成ファイル(app.config)の設定を変更し、Cookieを有効にしてください。設定するのは、binding要素のallowCookies属性です。

設定例

<system.serviceModel>
  <bindings>
    <basicHttpBinding>
      <binding name="UdkPortTypePortBinding"
        allowCookies="true"
 :

日付型フィールドの特殊フィールド

日付型フィールドは「フィールド名+Specified」という名の特殊フィールドとセットで構成されます。これはサーバー側との通信の際にフィールドの値が有効かどうかのフラグとなります。
Webサービス版RDE UDK使用時には、次のことに注意してください。

サーバー側から受信したデータの日付型フィールドを利用する場合

「フィールド名+Specified」フィールドの値が真(True)の場合のみ、有効値と判断します。

//文書情報を取得する
ServiceRef.UdkConnect.document doc = udkConnect.GetDocument(docNum);
if( doc.spoolStartTimeSpecified == true )
{
    Console.WriteLine("スプール日時:" + doc. spoolStartTime);
}

クライアント側からサーバー側に日付型フィールドを含むデータを送信する場合

「日付型フィールド名+Specified」のフィールド値を「真(True)」にします。

//文書の検索条件を作成する
ServiceRef.UdkConnect.documentFilter filter = new ServiceRef.UdkConnect.documentFilter();
filter. spoolFrom = new DateTime (2007,1,1);
filter. spoolFromSpecified = true;
//文書情報一覧を取得する
ServiceRef.UdkConnect.document[]docs = udkConnect.GetDocuments(filter);

同期と非同期呼び出し

.NETの場合、[サービス参照の追加]でWebサービス定義時に自動的に生成されるプロキシクラスにより、「同期」「非同期」の2種類のWebメソッドの呼び出し方法が利用可能です。

本マニュアルでは「同期」による呼び出し例を使用して説明します。
非同期呼び出しを行う場合は、「メソッド名+Async」を使用して呼び出しを行い、コールバック関数で後処理を行う必要があります。非同期呼び出しの使用例として本製品に付属のサンプルプログラム(VB.NET)を参考にしてください。

タイムアウト設定について

Webサービス定義時に生成される構成ファイル(app.config)の設定によりクライアント側でタイムアウトが発生します。処理によってはサーバー側の処理が完了する前にタイムアウトする場合もあるため、クライアント側で適切な値に調整してください。設定するのは、binding要素のsendTimeout属性です。

設定例

<system.serviceModel>
  <bindings>
    <basicHttpBinding>
      <binding name="UdkPortTypePortBinding"
        sendTimeout="00:10:00"
 :

メッセージサイズ設定について

Webサービス定義時に生成される構成ファイル(app.config)の設定により、Webサービスのメッセージサイズに制限があります。文書情報取得などで、一度のメソッド要求に対して制限値以上のサイズの応答があるとクライアント側でExceptionが発生し取得できないため、クライアント側で適切な値に調整してください。設定するのは、binding要素のmaxReceivedMessageSize属性、およびmaxBufferSize属性です。

設定例

<system.serviceModel>
  <bindings>
    <basicHttpBinding>
      <binding name="UdkPortTypePortBinding"
      maxReceivedMessageSize="536870911"
      maxBufferSize="536870911"
 :