質問

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

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

転送される画像は最大32KBの任意のものです。

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

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

アイデアはありますか

編集:イメージがファイルシステムにリモートで保持されておらず、Oracleデータベースに保存されていることを忘れていました。直接接続する機能はありません

役に立ちましたか?

解決

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

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

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top