オブジェクトの配列を単一のパラメータとして受け取る操作を持つWCFサービスのプロトタイプを作成しました。問題は、各オブジェクトが基本クラス(Messageと呼ばれます)から継承され、その順序がわからないことです。最初は、WCFが受け取る(誤って)のは、メッセージから派生した正しいタイプではなく、メッセージエレメントの配列です。DelphiクライアントからWCFを使用する(配列と継承)
少し努力して、Delphi 6.02からこのサービスを呼び出すことができました。私はWSDLインポーターを使って基本クライアントを作成し、ソースを手作業で編集してDelphi SOAP解釈のいくつかの非互換性を修正しました。基本的に、私はこのように、OnBeforeExecuteイベントでいくつかの調整を行います。
SOAPRequest := StringReplace(SOAPRequest, '<item ', '<Message ', [rfReplaceAll]);
上記のコードは、Delphiは、配列要素を渡す方法を修正します。私はここでそれを学んだArray_Of_Int in SOAP client。その後、各オブジェクトは、メッセージとしてエンコードされますが、その実行時の型に属性ポイントさ
:
<Message xsi:type="Authenticate"> <!-- I need to get this, exactly, types can vary -->
問題があるが、ここで行く、私は配列の他の種類を持っています。次に、「アイテム」の出現を「添付ファイル」または「住所」に置き換えることができます。クラスをioDocumentとしてマークすると、基本クラスがtag-nameとして取得されますが、属性を介して正しいタイプが失われます。
これを処理する方法はありますか?おそらく私が使用できる他のSOAPライブラリですか?または、.NETは「アイテム」エンコーディングを理解できますか?
ありがとうございます。
ます。http://
この方法で、オブジェクトは実際の型をエクスポートするguarantedしますさstackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags/#answer-1732454 –