- PR -

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

投稿者投稿内容
よしまさ
常連さん
会議室デビュー日: 2003/11/04
投稿数: 20
投稿日時: 2004-02-18 11:04
VB6.0でSOAPクライアントを作成しているのですが以下のようなエラーが出てしまいます。

WSDLReader:Analyzing the WSDL file failed HRESULT=0x80004005 - WSDLReader:Initialization of service failed HRESULT=0x80004005 - WSDLService:Initialization of the port for service XXXXService failed HRESULT=0x80004005 - WSDLPort:No binding

コードは以下の通りです。

Set ogSoap = New SoapClient

Call ogSoap.mssoapinit("http://localhost/wsdl/XXXX.wsdl", _
"XXXXService", _
"XXXXPort")

どうしたら解決できるのかわかりません。
どなたかご教授お願いします。
よしまさ
常連さん
会議室デビュー日: 2003/11/04
投稿数: 20
投稿日時: 2004-02-18 18:02
すみません補足します。

呼び出そうとしているWebサービスは、Javaで作成されておりCOM化されておりません。
WSDLファイルはクライアント側で所持しています。

SOAP Toolkitを使用する場合、WebサービスはCOM化されてなければならないのでしょうか?
uk
ぬし
会議室デビュー日: 2003/05/20
投稿数: 1155
お住まい・勤務地: 東京都
投稿日時: 2004-02-19 12:28
SOAP ToolKitについての知識はありませんが、リファレンスを見る限り、この時点ではサーバ
に接続していないと思われます。従ってサーバ側の問題ではないでしょう。
WSDLファイルだけ指定してサービスやポートの指定を省略した場合はどうなるかまず試して
みてはどうでしょうか。
よしまさ
常連さん
会議室デビュー日: 2003/11/04
投稿数: 20
投稿日時: 2004-02-19 13:11
uk様 ご返答ありがとうございます。

WSDLファイルだけを指定すると以下のようなエラーが発生しました。

WSDLReader:XML Parser failed at linenumber 0, lineposition 0, reason is: 指定されたオブジェクトは見つかりません。

C#でのクライアント作成には成功しました。
しかし、VB6.0でも同じWebサービスを呼び出したいのです。

SOAP Toolkitを使用せず、VB6.0でSOAPクライアントを作成するのは困難なのでしょうか?
Paul
ベテラン
会議室デビュー日: 2002/04/30
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2004-02-19 23:52
中込です。
ご提示のコードは問題ないように見えます。

引用:

呼び出そうとしているWebサービスは、Javaで作成されておりCOM化されておりません。


JAX-RPCだと仮定しますと、基本的な型であれば、まず問題ないはずです。
当方では、Server側にAXIS1.1(Java)を利用して成功しています。

引用:

WSDLReader:XML Parser failed at linenumber 0, lineposition 0, reason is: 指定されたオブジェクトは見つかりません。


URLで指定したリソース(WSDL)が取得できていないと思われます。
ブラウザで "http://localhost/wsdl/XXXX.wsdl" にアクセスできますか?
スペルミスなどははありませんか?

引用:

SOAP Toolkitを使用せず、VB6.0でSOAPクライアントを作成するのは困難なのでしょうか?


アンマネージコードで記述された、何らかのSOAP実装を使うと良いでしょう。
最新のPocketSOAPはかなり安定しています。
多分、AXIS(C++)でも可能でしょう。
よしまさ
常連さん
会議室デビュー日: 2003/11/04
投稿数: 20
投稿日時: 2004-02-20 12:33
中込様、ご返答ありがとうございます。

>URLで指定したリソース(WSDL)が取得できていないと思われます。
>ブラウザで "http://localhost/wsdl/XXXX.wsdl" にアクセスできますか?
>スペルミスなどははありませんか?

はじめ、私もスペルミスだと思い確認してみましたが、
WSDLファイルにはアクセスできました。

>アンマネージコードで記述された、何らかのSOAP実装を使うと良いでしょう。
>最新のPocketSOAPはかなり安定しています。

ありがとうございます。試してみます。
よしまさ
常連さん
会議室デビュー日: 2003/11/04
投稿数: 20
投稿日時: 2004-02-23 17:19
中込様へ、稚拙な質問かもしれませんがどうかよろしくお願いします。

PocketSOAPで試してみたのですが、

CreateProxyメソッドの第二引数が,"methodName namespace URI"となっており、
何を指定すればよいのかがわかりません。

WSDLファイルに記述されているどれかなのでしょうか?

Paul
ベテラン
会議室デビュー日: 2002/04/30
投稿数: 75
お住まい・勤務地: 東京
投稿日時: 2004-02-26 00:02
中込です。お返事が遅くなりまして、すみません。

さて、
引用:

CreateProxyメソッドの第二引数が,"methodName namespace URI"となっており、
何を指定すればよいのかがわかりません。
WSDLファイルに記述されているどれかなのでしょうか?


ここで指定した値は、SOAPリクエストのメソッド名のネームスペースになります。

コード:

Dim factory , proxy As Object
Set factory = CreateObject("PocketSoap.Factory")
Set proxy = factory.CreateProxy("getResult", "ABCDE")
  txtVersion.Text = proxy.getResult(param:="XYZ")


例えば、上のように指定すれば、以下のようなSOAP要求が送信されるはずです。
コード:

<S:Envelope
S:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:a="ABCDE"
xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:XS="http://www.w3.org/2001/XMLSchema"
xmlns:XI="http://www.w3.org/2001/XMLSchema-instance">
<S:Body>
<a:getResult>
<a:param XI:type="XS:string">XYZ</a:param>
</a:getResult>
</S:Body>
</S:Envelope>



ですから、WSDLとの関連となりますと、SPEC上では
/definitions/binding/operation/inputの子のsoap:body
(xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/)の
namespaceアトリビュートの設定値ということになると思います。

Server側のSOAP実装依存だとは思いますが、たいていディフォルト値("")の
ままでも動作はすると思います。
====================================================================
追伸(2004.2.26):
上の最後の一文について、若干の注記を追加させていただきます。

SOAP1.1 Specでは [4.3 SOAP Body]に以下のような記述があります。
引用:

Immediate child elements of the SOAP Body element MAY be namespace-qualified.


http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383503

このMAY be namespace-qualifiedというのが問題で、SOAP実装によって
解釈が変わる余地があります。そこで、「たいてい」は名前空間修飾なし
でもOKになるようですというあいまいな答えになってしまうわけです。

ちなみに、WS-Iではこの問題に、ネームスペースの強制という形での解決を
得ようとしているようです。
http://www.ws-i.org/Profiles/Basic/2003-08/BasicProfile-1.0a-ja.html#refinement28003632
====================================================================

[ メッセージ編集済み 編集者: nakagome 編集日時 2004-02-26 10:04 ]

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