3

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 のプロパティに明らかなものは何もありません。

ティア

4

5 に答える 5

4

HA HA IT LIVES !!!

基本的に私はお勧めを取り出さなければなりませんでした

InvRegistry.RegisterInvokeOptions(TypeInfo(ActivityService), ioDocument);

Secを使用するように強制します。5エンコーディング。名前空間は必要に応じて生成され、パラメーターはJavaWebサービスに渡されます。

そうです、ビールが必要です、たくさんのビール:)

于 2009-02-25T17:37:16.730 に答える
2

WSDL で次の行をコメントするだけです。

//InvRegistry.RegisterInvokeOptions(TypeInfo(WebService), ioDocument);

それで十分です...楽しんでください。

于 2012-01-31T09:58:26.217 に答える
1

この投稿を見つけるまで、2日間壁に頭をぶつけました...そして、THTTPRIO.Converter.OptionsをチェックするCesarsのヒント...ほとんどすべてを試しましたが、最後のものはsoXXXXHdrをtrueに設定することでした->その後、何か奇妙なことが起こりました、サーバーへのヌルはもうありません:O...

その設定が値を通過させる理由はわかりませんが、(少なくとも私にとっては)そうです。

何が起こっているのかを実際に理解している人がこれを説明してくれれば素晴らしいでしょう.

于 2009-06-02T15:43:12.803 に答える
1

Converter.Options から soSendMultiRefObj を削除すると役立ちます

于 2010-02-03T12:12:36.877 に答える