3

現在、顧客に関するデータを前後に転送するビジネス アプリのドキュメント リテラル SOAP サービスを変更しています。

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

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

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

これは非常に悪い考えのように感じますが、これ以上のことは思いつきません。

何か案は?

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

4

1 に答える 1

5

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

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

于 2009-05-03T13:11:47.697 に答える