2009-04-20 4 views
3

私は、サードパーティ製のwsdl仕様を実装しているSOAPサーバを入手しようとしています。私はDelphiのwsdlインポーターを使用しました。生成されたコード(の一部)は次のようになります。WSDLインポータで障害のあるサーバが生成される

呼ば
miniPortType = interface(IInvokable) 
['{824D172A-9C1F-D202-5B21-4C324553BCF0}'] 

    // Cannot unwrap: 
    // - Input element wrapper name does not match operation's name 
    function miniService(const aMessage: MiniMessageType): MiniAnswerType; stdcall; 
end; 

、サーバは、「『MiniMessageType』という名前ませ方法は、インタフェースのminiPortType "によってサポートされていない」と述べています。

私は、関数の名前とメッセージのメイン要素の名前を同じにすることで、これを機能させることができます。

私は別の名前を持つことが可能であるべきだと思います。少なくともsoapUIは文句を言っていません。私は実際にはwsdlを実装する以外に選択肢はありません。誰も私がこれを回避する方法を知っていますか?

私はDelphi 2007を使用しています。

ありがとう、Miel。

+1

どのデルファイのバージョンを使用していますか? –

+0

何をやったのですか?私はここで役に立つ解決策を探していた。 –

+2

@chris DelphiでSOAPサービスを作成しようとしました。私は、Delphiを邪魔するSOAPのサポートが不足していることが分かりました。特にサービスの場合。私は今それらをC#で書く。公式のEmbarcaderoスタンスは、サービスがPrismで書かれるべきであると思われる... – Miel

答えて

0

私が正しく思い出した場合、SOAPインターフェースは定義の最後の「テーブル」に実際に定義されています。これは、コミュニケーションのDelphiタイプとSOAPタイプの間の変換を行うために使用されます。私は過去にこのようなことをテーブルビルディングの呼び出しを手作業で変更することで "修正"しましたが、注意が必要ですし、適切な点でSOAPテキストをマングルしてすべてのものに合わせる必要があるかもしれません。

+0

私も同様の問題がありました。最新のwsdlimpは、SOAPヘッダーのフィールドを生成できませんでした。しかし、ヘッダーのフィールドのクラスが生成されました。ですから、メソッドを実行する前に、手作業ですべてのヘッダーをインスタンス化し、メソッドを実行する前に1つずつ送信する必要がありました。 RIO.SoapHeader.Send();私はそれが誰かを助けることを願っています。 – John

関連する問題