4

私は、サード パーティによって作成された wsdl 仕様を実装する SOAP サーバーを起動しようとしています (これは正しい用語ですか?)。Delphi の 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 を使用しています。

ありがとう、ミエル。

4

1 に答える 1

1

私の記憶が正しければ、SOAP インターフェースは実際には定義の下部にある「テーブル」で定義されており、通信で Delphi 型と SOAP 型の間の変換を行うために使用されます。私は過去にテーブル構築呼び出しを手動で変更することでこの種のことを「修正」しましたが、注意が必要であり、すべてが収まるように適切なポイントで SOAP テキストをマングルする必要がある場合もあります。

于 2009-04-20T14:18:00.653 に答える