- - PR -
VB6.0でのSOAPクライアント作成について
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-03-02 14:53
中込様、ご丁寧な返答ありがとうございます。
おかげでうまくいきました。 しかし、今度は違うWebサービスを呼び出す事ができずに困っています。 サーバ側はApache AXIS、クライアント側はVB6.0で作成しようとしているのですが うまくクライアント側でWebサービスを呼び出せません。 使用しているツールはPocketSoapです。 呼び出すサービスの引数には複合型要素を含んでいます。そのため、マッピングする必要があると思い、WSDL Wizardを使用し自動でプロキシを作成しました。その際、WSDL Wizardでimport文がサポートされていないようだったので<types>でインポートしていたスキーマなどを一つのWSDLファイルにまとめました。 しかし、メソッドを呼び出そうとするとエラーが発生してしまいす。 調べてみると、作成されたプロキシクラスの中で、データを送信する際のシリアライズで失敗しているようです。 メソッドの引数として渡すオブジェクトにインスタンスをしない状態(Nothing)だとうまくいきます。しかし、当然サーバ側でエラーが発生します。 うまくマッピングされていないのでしょうか? 原因がわからず困っています。 ----------WSDL Wizardで作成されたコード-------- Private Sub SendRecv(ByVal env As CoEnvelope, ByVal soapAction As String) Dim ht As IHTTPTransport If TypeOf m_transport Is IHTTPTransport Then Set ht = m_transport ht.soapAction = soapAction End If ↓ここでエラー m_transport.Send m_url, env.Serialize env.Parse m_transport End Sub --------------------------------------------- |
|
投稿日時: 2004-03-04 22:32
中込です。
手順や方法自体に関しては問題ないように思います。 WSDL Wizardを利用して、complexTypeを引数にとるサービスを呼び出すことも 問題ありません。(ただし、サービス側がAXISの場合、rpc/encoded以外とは 相性がわるいようです。) WSDLがないとはっきりしたことは申し上げられませんが、場合によってWizardで 生成されたコードが完全でない場合がありえます。(complexType内のxsd:long型 の要素が生成したプロキシのコードから欠落していたことがありました) 生成されたプロキシのコードを見直されることをお勧めします。 |