WebBrowserでCGIをPOST

解決


あたふた君  2005-04-13 09:03:16  No: 89346

WEBカメラへWebBrowser1.Navigate2 URLで画像を受信しています。
Me.WebBrowser1.Navigate2 "http://aaa.bbb.ccc.ddd/"

このWEBカメラは、2重ログインが出来ない仕組みなので、プロ
グラムを終了すると、その後しばらくログインできません。
これを防止するためWEBカメラの仕様で、同一のIPアドレスのCGI
に対してコマンドをPOSTして、ログアウトを通知して、WEBカ
メラは(CGIが)「了解」の旨のデータを返してくる仕様にな
っています。
Me.WebBrowser1.Navigate2 _
 "http://aaa.bbb.ccc.ddd/fff.cgi" ,"POST",LOGOUT_CMD

所定のコマンドをWebBrowser1.Navigate2でPOSTすることには
成功したのですが、WEBカメラのCGIが返すデータがHTMLでは無いた
めかメモ帳が突然開き、その中で「了解」を示すコマンドが表示さ
れます。
WebBrowser1とは別にWinsockコントロールで送信してWinsockで受信
すべきなのでしょうか。WinsockでサーバのCGIへPOSTする方法
もわかりません。

どのように対処したらよいのか、困っています。よろしくお願いし
ます。


ガッ  2005-04-13 09:16:28  No: 89347

確かでは有りませんが、
InetコントロールでExecuteメソッドを使えば、
HTTPのPOSTメソッドを使えるような雰囲気です。


魔界の仮面弁士  2005-04-13 18:02:30  No: 89348

Webページの表示が目的ではなく、HTTP/HTTPSの通信だけが
必要なのであれば、WebBrowserではなく、XMLHTTPの方が便利かも。


あたふた君  2005-04-13 18:17:24  No: 89349

ガッ様  アドバイスありがとうございます。
アクセスには認証が必要でMe.WebBrowser1.Navigate2ではURL内に"ID:PASS@"
を含めることでOKなのですが、Inet1の場合、同方法が使用できません。
おそらくBasic認証ではないものと思われ、さらにLAN上のログを確認すると
WebBrowser1.Navigate2ではUser_AgentがMSIE6.0;Windows98なのに対し
Inet1.Excuteの場合User_Agentは、Microsoft URL Contorlです。
このUser-Agentの違いが、認証ダイアログをスキップできるかどうかの差では
ないかと思っています。
そんな理由でInetコントロールは使用できない状態です。
Winsock でPOST の方法がわかっても、同様の問題が発生するかもわかりませ
んが、可能性をひとつずつ確かめようと思います。
Winsock でPOST の方法  ご存知のかた、または関連サイトのご紹介、よろし
くお願いします。


あたふた君  2005-04-13 19:12:34  No: 89350

魔界の仮面弁士様。ありがとうございます。

XMLHTTPで認証の問題は解決しました。
ログを調査しましたがXMLTHHPの場合、WebBrowser1と同様
User_AgentがMSIE6.0でした。
後は、XMLTHHPでCGIにデータをPOSTする方法を調査して試
してみたいと思います。
「XMLTHHPでCGIにデータをPOSTする方法」もし、壁にいき
づまりましたら、またご指導よろしくお願いします。


あたふた君  2005-04-14 00:45:31  No: 89351

XMLHTTPでPOSTでき解決しました。みなさま本当にありがとうございました。
参考に:
Dim OBJ_HTTP  As Object

' オブジェクト変数に参照をセット。
On Error Resume Next
    Set OBJ_HTTP = CreateObject("MSXML2.XMLHTTP")
    If (Err.Number <> 0) Then
        Set OBJ_HTTP = CreateObject("MSXML.XMLHTTPRequest")
    End If
On Error GoTo 0
    If OBJ_HTTP Is Nothing Then
        MsgBox "XMLHTTP オブジェクトを作成できませんでした。" _
               , vbCritical
        Exit Sub
    End If

    With OBJ_HTTP
'POST送信
        .Open "POST", "http://aaa.bbb.ccc.ddd/fff/ggg.cgi, False
        .Send "My Send DATA"
'結果
         Debug.Print .responseText
    End With
End Sub


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

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






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