1

外部の Web サービスがあり、それぞれ、彼にクライアントが必要です。シェル Embarcadero RAD Studio XE (Delphi XE) の WSDL 標準に基づいて、通常はうまく機能するユニットが作成されましたが、この場合、100 以上のパラメーターに転送される関数の 1 つに注意が必要です。実行時に Web サービスを呼び出すためのオブジェクトを作成すると、「メソッド 'メソッド名' のパラメーターが多すぎます」というエラーが発生します。パラメータの数が 61 に減ると、すべてが機能し始めます。Web サービスの呼び出しは正常に実行され、応答が返されます。なぜこうなった?インターネットを回したが、結果はゼロ。

4

1 に答える 1

7

それはまさにエラーメッセージが言う理由で起こっています。パラメータが多すぎます。SOAPラッパーのコードジェネレーター(Rio.pas内)では、252バイトのみをスタックにプッシュして、ラップされたメソッドを呼び出すことができます。これは、63個のポインターサイズのパラメーターに変換されます。(パラメーターが大きいほど、より多くのバイトが必要になる場合があり、許可されるパラメーターの総数が減ります。)

于 2012-07-23T17:41:06.913 に答える