2009-05-03 7 views
3

私は現在、顧客に関するデータを前後に転送するビジネスアプリケーション用のドキュメントリテラルSOAPサービスを変更しています。document literalを使用してbase64でイメージを送信する代わりにSOAP

スキャンしたドキュメントイメージを転送するための新しい要件が確認されました。私が持っている問題は、私が使用している独自の言語がSOAP添付ファイルをサポートしていないことです。

転送される画像は最大32KBです。

私が考えることができる唯一の解決策は、base64でイメージをエンコードし、それをXMLドキュメントの要素として渡すことです。

これは本当に悪い考えのように感じますが、私はもっと良いことは考えられません。

アイデア?

編集:私はイメージがファイルシステムにリモートで開催されていない、私が直接接続する機能を持たない、Oracleデータベースに格納されていることを言及するのを忘れてしまった、

答えて

5

あなたが」 XMLをデータ転送メカニズムとして使用する場合は、何らかの方法でイメージをエンコードする必要があります。その理由は、XMLはテキスト形式であり、XMLプロセッサはバイナリデータをテキストのようにデコードしようとします(具体的には、別のエンコーディングを指定しない限りUTF-8のようになります)。さらに、XMLは明示的にいくつかの文字(XML 1.0の場合はASCII非印字可能文字、XML 1.1の場合は\ u0000)を許可しないので、画像データをCDATAセクションにダンプするだけでデータが破損します。

編集:XMLスキーマは"base64Binary"タイプを定義しているため、WSDLを適切に定義することができます(自動マーシャラーを使用していると仮定します)。少なくとも、エンコードされたコンテンツを含む要素には"xsi:type"属性を使用する必要があります。

+0

これは私のために働く! – kingmunkyman

+0

base64BinaryとhexBinaryの両方が動作します。いい答えだ! –

関連する問題