■ XML文書をXMLHTTPで送信するには?
ぺりかん
[E-Mail]
2005/04/30(土) 23:30:04
はじめて質問させていただきます。
VB6.0でXMLHTTPを使ってWebサーバにXML文書を送信しようと考えています。
以下のようなコードを作成しました。
--------------------------------------------------------------------
Dim oHTTP As Object
Dim strURL As String
Dim doc As New MSXML2.DOMDocument
strURL="https://xxxxxxx/xxx.cgi"
set oHTTP=CreateObject("MSXML2.XMLHTTP")
Call doc.Load("C:\...\test.xml")
oHTTP.open "POST",strURL,False
oHTTP.setReqestHeader "Content-Type","text/xml"
oHTTP.send doc
---------------------------------------------------------------------
このsend部分で、0x80070057"パラメータが間違っています"というエラーが
でてしまいます。
いろいろ試行錯誤したのですが、原因がわからずお手上げ状態です。
なにか根本的に間違えているかもしれませんが、ご教授いただけませんでしょうか。
あん
2005/05/01(日) 15:47:19
docがstrinじゃないからでは?
魔界の仮面弁士
2005/05/01(日) 20:22:39
MSXML2.DOMDocument はアーリーバインドにしているのに、
MSXML2.XMLHTTP をレイトバインドにしているのは何故でしょう?
> oHTTP.setReqestHeader "Content-Type","text/xml"
まず、これが間違っていますね。
oHTTP.setRequestHeader "Content-Type", "text/xml"
に修正してみてください。
> このsend部分で、0x80070057"パラメータが間違っています"というエラーが
> でてしまいます。
データ型の指定が間違っているからです。
sendの引数には、Variant型を指定してください。
正確にいえば、
・内部形式 String の Variant型
・内部形式 Byte配列 の Variant型
・IStream を実装したオブジェクト を持つ Variant型
のいずれかしか渡せません。
XMLHTTPをアーリーバインドしている時には、暗黙の型変換が行われるので
oHTTP.send doc
でも動作しますが、今回のような宣言にしているときには、
oHTTP.send CVar(doc)
のように、明示的に型変換を行うか、もしくは渡す引数を
Dim doc As Variant
のように宣言しておく必要があります。
ぺりかん
2005/05/05(木) 00:38:58
[[解決]]
あんさん、魔界の仮面弁士さん、お返事ありがとうございます。
書き込みが遅くなり申し訳ありません。
>まず、これが間違っていますね。
> oHTTP.setRequestHeader "Content-Type", "text/xml"
>に修正してみてください。
すみません。書き込み時のタイプミスです。
開発PCと質問させていただいてるPCが異なるもので…。
>XMLHTTPをアーリーバインドしている時には、暗黙の型変換が行われるので
> oHTTP.send doc
>でも動作しますが、今回のような宣言にしているときには、
> oHTTP.send CVar(doc)
>のように、明示的に型変換を行うか、もしくは渡す引数を
> Dim doc As Variant
>のように宣言しておく必要があります。
なるほど。
はじめ、どちらもレイトバインドにしていたのですが、
いろいろ試行錯誤していて、いつのまにかDOMだけアーリーバインドに
なっていました。
XMLHTTPをアーリーバインドにすることで、万事解決いたしました。
本当にありがとうございます。
まだ実際にWebサーバとXMLのやりとりができるところまでは
できていないので、また質問させていただくことがあるかもしれませんが、
よろしくお願いいたします。
毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!
