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 サービスの名前。
- Field1 と Field2
- サービスの 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>
リスト データ
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 ステージで定義されているリスト フィールドのデータ タイプ。
- Subfield1 と Subfield2
- リスト フィールドを構成する子フィールドの名前。
たとえば、このリクエストは、名、姓、電話番号のリストを 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 でそのサービスを開いて を選択します。
たとえば、このリクエストはオプション OutputCasing を U に設定します。
<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 ステージにおいて、[入力フィールド] タブの [データ タイプ名] フィールドで指定されたものです。
- FirstName、LastName、AddressLine1、City、および StateProvince はフラット フィールドです。
- PhoneNumbers は、階層 ("リスト") フィールドです。HomePhone、CellPhone、および OfficePhone というサブフィールド名が含まれています。
- user_fields は、ユーザ定義フィールドを含みます。これらはパススルーされ、Web サービスによって変更されることなく出力に返されます。