JAX-WS を使用して Java で設定した Web サービスを使用しようとすると、Delphi 2007 で問題が発生します。Web サービスは、別の Java プログラムおよび C# / ASP.NET 2.0 Web サイトから問題なく使用できます。しかし、Delphi 2007 (2007 年 12 月 17 日パッチ) で WSDL インポーターを使用して同じサービスにアクセスしようとすると、JAX-WS Web サービスは渡したパラメーターを認識せず、それらを無効にします。
Delphi から渡された SOAP メッセージを確認し、他のメッセージと比較したところ、ほとんど同じでした (いくつかの無視できるネームスペース dec と .NET からの多数のビュー ステートを除いて!)。
私もウェブの周りにいました(最も役立つリンクはボブ博士のhttp://www.bobswart.nl/Weblog/Blog.aspx?RootId=5:798でした)が、喜びはありませんでした。
誰もこれに遭遇したことがありますか?
ティア。
物語は続く!
HTTPRIO オブジェクトをいじって動作させようとした後、最終的にあきらめて、HTTP を介した直接の XML 転送を試みました。失敗。
わかりましたので、C# で簡単なテスターを作成して試してみました。問題なく動作します。
Fiddler を使用して、何が前後に送信されているかを確認すると、唯一の違いは名前空間にあるように見えました。Delphi で XML 送信の名前空間を変更したところ、うまくいきました。
これは、WSDLImporter によって生成される元の XML のサンプルです。
<?xml version="1.0"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Body>
<version xmlns="http://path.to.service.com/">
<input>test</input>
</version>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
実際に機能するのは次のとおりです。
<?xml version="1.0"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:version xmlns:ns2="http://path.to.service.com/">
<input>test</input>
</ns2:version>
</S:Body>
</S:Envelope>
これがわかったところで、WSDLImporter コードの名前空間の値を変更しますか? HTTPRIO のプロパティに明らかなものは何もありません。
ティア