XML文書をXMLHTTPで送信するには?

解決


ぺりかん  2005-05-01 08:30:04  No: 89663

はじめて質問させていただきます。
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-02 00:47:19  No: 89664

docがstrinじゃないからでは?


魔界の仮面弁士  2005-05-02 05:22:39  No: 89665

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 09:38:58  No: 89666

あんさん、魔界の仮面弁士さん、お返事ありがとうございます。
書き込みが遅くなり申し訳ありません。

>まず、これが間違っていますね。
>  oHTTP.setRequestHeader "Content-Type", "text/xml"
>に修正してみてください。
すみません。書き込み時のタイプミスです。
開発PCと質問させていただいてるPCが異なるもので…。

>XMLHTTPをアーリーバインドしている時には、暗黙の型変換が行われるので
>  oHTTP.send doc
>でも動作しますが、今回のような宣言にしているときには、
>  oHTTP.send CVar(doc)
>のように、明示的に型変換を行うか、もしくは渡す引数を
>  Dim doc As Variant
>のように宣言しておく必要があります。
なるほど。
はじめ、どちらもレイトバインドにしていたのですが、
いろいろ試行錯誤していて、いつのまにかDOMだけアーリーバインドに
なっていました。
XMLHTTPをアーリーバインドにすることで、万事解決いたしました。
本当にありがとうございます。

まだ実際にWebサーバとXMLのやりとりができるところまでは
できていないので、また質問させていただくことがあるかもしれませんが、
よろしくお願いいたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加