XML POST リクエスト

ユーザ定義の Web サービスを、REST Web サービスとしてエクスポーズし、XML 入力を受け取る POST メソッドを持つように設定できます。XML POST リクエストには Content-Type:application/xml を指定し、以下の形式を使用します。

フラット データ

POST を用いてフラット データを Web サービスに送信するための形式は次のとおりです。

<ServiceNameRequest xmlns:svc="http://www.pb.com/spectrum/services/ServiceName">
    <svc:Input>
       <svc:Row>
          <svc:Field1>Example value</svc:Field1>
          <svc:Field2>Another example value</svc:Field2>
       </svc:Row>
    </svc:Input>
</ServiceNameRequest>

説明:

serviceName,
Spectrum™ Technology Platform サーバー上の Web サービスの名前。
Field1Field2
サービスの Input ステージで定義されている入力フィールドの名前。

たとえば、このリクエストは、名と姓を CasingExample という名前のサービスに送信します。

<CasingExampleRequest xmlns:svc="http://www.pb.com/spectrum/services/CasingExample">
    <svc:Input>
       <svc:Row>
          <svc:FirstName>Alex</svc:FirstName>
          <svc:LastName>Smith</svc:LastName>
       </svc:Row>
    </svc:Input>
</CasingExampleRequest>

リスト データ

リスト データは、親フィールドの下でグループ化されているフィールドの階層グループ構造で構成されます。
注: リスト データを入力として使用するには、GET リソースを持たない REST Web サービスとしてサービスがエクスポーズされている必要があります。サービスに GET リソースがある場合は、サービスのエクスポーズ時に Enterprise Designer においてエラーが発生します。GET が階層フィールドをサポートしないためです。

POST を用いてリスト データを Web サービスに送信するための形式は次のとおりです。

<?xml version="1.0" encoding="UTF-8"?>
<ServiceNameRequest xmlns:svc="http://www.pb.com/spectrum/services/ServiceName">
    <svc:Input>
        <svc:Row>
            <svc:ListField1>
                <svc:DataType>
                    <svc:SubField1>Example value</svc:SubField1>
                    <svc:SubField2>Example value</svc:SubField2>
                </svc:DataType>
            </svc:ListField1>
        </svc:Row>
    </svc:Input>
</ServiceNameRequest>

説明:

ListField1
サービスの Input ステージで定義されている階層フィールドの名前。
DataType
サービスの Input ステージで定義されているリスト フィールドのデータ タイプ。
Subfield1Subfield2
リスト フィールドを構成する子フィールドの名前。

たとえば、このリクエストは、名、姓、電話番号のリストを CasingExample という名前のサービスに送信します。

<CasingExampleRequest xmlns:svc="http://www.pb.com/spectrum/services/CasingExample">
    <svc:Input>
       <svc:Row>
          <svc:FirstName>George</svc:FirstName>
          <svc:LastName>Washington</svc:LastName>
          <svc:PhoneNumbers>
              <svc:PhoneNumbers>
                 <svc:HomePhone>123-234-9876</svc:HomePhone>
                 <svc:CellPhone>123-678-9012</svc:CellPhone>
                 <svc:OfficePhone>123-987-6543</svc:OfficePhone>
               </svc:PhoneNumbers>
          </svc:PhoneNumbers>
       </svc:Row>
    </svc:Input>
</CasingExampleRequest>

ユーザ フィールド

Web サービスでは使用されない余分なフィールドを、サービスを介して渡すことができます。こうしたフィールドは、変更されずに応答の user_fields セクションで返されます。リクエストで供給するユーザ フィールドは、サービス データフローの Input ステージで定義する必要はありません。

<ServiceNameRequest xmlns:svc="http://www.pb.com/spectrum/services/ServiceName">
    <svc:Input>
       <svc:Row>
          <svc:user_fields>
            <svc:user_field>
                <svc:name>FieldName</svc:name>
                <svc:value>FieldValue</svc:value>
            </svc:user_field>
          </svc:user_fields> 
       </svc:Row>
    </svc:Input>
</ServiceNameRequest>

説明:

FieldName
パススルー フィールドの名前。
FieldValue
パススルー フィールドに含まれる値。

たとえば、このリクエストは配偶者の名前をパススルー フィールドとして送信します。ユーザ フィールド名は Spouse で、フィールドの値は Martha です。

<CasingExampleRequest xmlns:svc="http://www.pb.com/spectrum/services/CasingExample">
    <svc:Input>
        <svc:Row>
            <svc:FirstName>George</svc:FirstName>
            <svc:LastName>Washington</svc:LastName>
            <svc:PhoneNumbers>
                <svc:PhoneNumbers>
                    <svc:HomePhone>123-123-1234</svc:HomePhone>
                    <svc:CellPhone>123-456-4567</svc:CellPhone>
                    <svc:OfficePhone>123-678-6789</svc:OfficePhone>
                </svc:PhoneNumbers>
            </svc:PhoneNumbers>
            <svc:user_fields>
                <svc:user_field>
                    <svc:name>Spouse</svc:name>
                    <svc:value>Martha</svc:value>
                </svc:user_field>
            </svc:user_fields>
        </svc:Row>
    </svc:Input>
</CasingExampleRequest>

オプション

リクエストでオプションを指定することによって、サービス データフローで指定されたデフォルトのオプションをオーバーライドできます。ユーザ定義の Web サービスに対してオプションを指定できるのは、データフローがオプションを受け付けるように設定されている場合のみです。リクエストにおいてオプションを受け付けるようにサービスを設定するには、Enterprise Designer でそのサービスを開き、[編集] > [データフロー オプション] を選択します。

リクエストで処理オプションを指定するための形式は次のとおりです。

<ServiceNameRequest xmlns:svc="http://www.pb.com/spectrum/services/ServiceName">
    <svc:options>
        <svc:OptionName>OptionValue</svc:OptionName>
    </svc:options>
    <svc:Input>
        <svc:Row> ... </svc:Row>
    </svc:Input>
</ServiceNameRequest>

説明:

OptionName
オプション名。サービスに対する有効なオプションの一覧については、そのサービスの WADL を参照するか、Enterprise Designer でそのサービスを開いて [編集] > [データフロー オプション] を選択します。
OptionValue
オプションに対する有効な値。有効値の一覧については、Enterprise Designer でそのサービスを開いて [編集] > [データフロー オプション] を選択します。

たとえば、このリクエストはオプション OutputCasingU に設定します。

<AddressValidationRequest xmlns:svc="http://www.pb.com/spectrum/services/AddressValidation">
    <svc:options>
      <svc:OutputCasing>U</svc:OutputCasing>
    </svc:options>
    <svc:Input>
       <svc:Row>
          <svc:FirstName>George</svc:FirstName>
          <svc:LastName>Washington</svc:LastName>
          <svc:AddressLine1>123 Main St.</svc:AddressLine1>
          <svc:City>Springfield</svc:City>
          <svc:StateProvince>MO</svc:City>
       </svc:Row>
    </svc:Input>
</AddressValidationRequest>

POST を用いた XML リクエストの例

以下に、Web サービスに対する POST を用いた XML リクエストにおいて、オプション、フラット フィールド、リスト フィールド、ユーザ定義フィールドを使用する例を示します。

<CasingExampleRequest xmlns:svc="http://www.pb.com/spectrum/services/CasingExample">
    <svc:options>
        <svc:OutputCasing>U</svc:OutputCasing>
    </svc:options>
    <svc:Input>
        <svc:Row>
            <svc:FirstName>George</svc:FirstName>
            <svc:LastName>Washington</svc:LastName>
            <svc:AddressLine1>1073 Maple</svc:AddressLine1>
            <svc:City>Batavia</svc:City>
            <svc:StateProvince>IL</svc:StateProvince>
            <svc:PhoneNumbers>
                <svc:PhoneNumbers>
                    <svc:HomePhone>123-123-1234</svc:HomePhone>
                    <svc:CellPhone>123-345-3456</svc:CellPhone>
                    <svc:OfficePhone>123-456-4567</svc:OfficePhone>
                </svc:PhoneNumbers>
            </svc:PhoneNumbers>
            <svc:user_fields>
                <svc:user_field>
                    <svc:name>Spouse</svc:name>
                    <svc:value>Martha</svc:value>
                </svc:user_field>
            </svc:user_fields>
        </svc:Row>
    </svc:Input>
</CasingExampleRequest>
この例の内容は次のとおりです。
  • OutputCasing は、Web サービスがエクスポーズするオプションで、出力を大文字と小文字のどちらで返すかを制御します。この例では、大文字を表す U が設定されています。
  • Input は、データフローの Input ステージのラベルです。Enterprise Designer のキャンバス上に表示されているものと同じです。
  • Row は、レコードレベル エンティティの名前です。データフローの Input ステージにおいて、[入力フィールド] タブの [データ タイプ名] フィールドで指定されたものです。
  • FirstNameLastNameAddressLine1City、および StateProvince はフラット フィールドです。
  • PhoneNumbers は、階層 ("リスト") フィールドです。HomePhoneCellPhone、および OfficePhone というサブフィールド名が含まれています。
  • user_fields は、ユーザ定義フィールドを含みます。これらはパススルーされ、Web サービスによって変更されることなく出力に返されます。