2012年3月23日金曜日

SOAPサーバーでString配列を返した場合


SOAPレスポンスでバイナリデータとファイル名などのメタ情報を同時に受信したい場合に、BASE64エンコードされたバイナリデータは文字列ですから、Stringの配列を使うことができます。

DOT.NETのWebServiceで戻り値をList<String>とした場合のResponseの例です。

Resutltタグ内に次のようにstringタグが複数作られます。

<?xml version="1.0" encoding="utf-8"?>
  <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Body>
      <SomeMethodResponse xmlns="http://www.mycompany.com/">
        <SomeMethodResult>
          <string>AAA</string>
          <string>BBB</string>
        </SomeMethodResult>
      </SomeMethodResponse>
    </soap:Body>
  </soap:Envelope>

例えば、上記の"AAA"の部分はファイル表示名、"BBB"の部分はPDFデータという組み合わせが可能です。
タグ名はいずれもstringとなるため、各々の要素の意味は順序や内容からプログラムで判断する必要があります。

このstringタグはSOAPレスポンスのタグなのでエスケープされません。またNSXmlParserはstringタグの開始、終了を通知してきますが、"string"自体は文字列としては抽出されません。

0 件のコメント: