- PR -

VB6.0でのSOAPクライアント作成について

投稿者投稿内容
よしまさ
常連さん
会議室デビュー日: 2003/11/04
投稿数: 20
投稿日時: 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
---------------------------------------------





Paul
ベテラン
会議室デビュー日: 2002/04/30
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2004-03-04 22:32
中込です。

手順や方法自体に関しては問題ないように思います。
WSDL Wizardを利用して、complexTypeを引数にとるサービスを呼び出すことも
問題ありません。(ただし、サービス側がAXISの場合、rpc/encoded以外とは
相性がわるいようです。)

WSDLがないとはっきりしたことは申し上げられませんが、場合によってWizardで
生成されたコードが完全でない場合がありえます。(complexType内のxsd:long型
の要素が生成したプロキシのコードから欠落していたことがありました)
生成されたプロキシのコードを見直されることをお勧めします。

スキルアップ/キャリアアップ(JOB@IT)