我们要用到的也是WebBrowser的“Navigate”方法,其函数原型如下所示:

Sub Navigate(URL As String, [Flags], [TargetFrameName], [PostData], [Headers])

新建一个工程,部件中勾选中 “Microsoft Internet Controls”,添加一个WebBrowser1、一个Command1在窗体上,可以把WebBrowser1适当拉大一点,Form1中添加以下代码:

Private Sub Command1_Click()

ReDim aByte(0) As Byte ' Array of bytes to hold data to post
   

    cPostData =
"login_name=帳號&password=密碼&cookietime=0&x=42&y=10"
   

    PackBytes aByte(), cPostData
   
    Dim vPost As Variant
   

    vPost = aByte ' Assign the byte array to a VARIANT
   
    Dim
vHeaders As Variant
   
    vHeaders = "Content-Type:
application/x-www-form-urlencoded" + Chr(10) + Chr(13)
   
   
WebBrowser1.Navigate "http://www.csdn.net/member/logon.asp",
, , vPost, vHeaders

End Sub

Private Sub PackBytes(ByteArray() As Byte, ByVal PostData As String)

iNewBytes = Len(PostData) - 1   ' Get rid of the null termination
   

    If iNewBytes < 0 Then
        Exit Sub
    End If
   

    ReDim ByteArray(iNewBytes)
   
    For i = 0 To iNewBytes
   

        ch = Mid(PostData, i + 1, 1)
        If ch = Space(1)
Then
            ch = "+"
        End If
        Debug.Print ch,
Asc(ch)
        ByteArray(i) = Asc(ch)
    Next
End Sub

Sub getWeb()
 
    Dim As XMLHTTP
    tmpth = "c:\temp.htm"
    URL = "http://www.baidu.com/"
    Set X = New XMLHTTP
    X.Open "GET", URL, False
    X.send
    s = X.responseText
    ss = "<body"
    arr = Split(s, ss)
    ss = ss & arr(1)
    If Dir(tmpth) <> "" Then Kill tmpth
 
    Open tmpth For Output As 1
    Print #1, , ss
    Close 1
    WebBrowser1.Navigate2 tmpth
    Set bd = WebBrowser1.Document.body
    Do While bd Is Nothing
        DoEvents
        Set bd = WebBrowser1.Document.body
    Loop
    SendKeys "c:\baidu.htm"
    SendKeys "{ENTER}"
    WebBrowser1.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_PROMPTUSER
    Kill tmpth
End Sub

在WebBrowser中发送POST请求的更多相关文章

  1. Vue中发送ajax请求——axios使用详解

    axios 基于 Promise 的 HTTP 请求客户端,可同时在浏览器和 node.js 中使用 功能特性 在浏览器中发送 XMLHttpRequests 请求 在 node.js 中发送 htt ...

  2. 如何在WinForm中发送HTTP请求

    如何在WinForm中请求发送HTTP 手工发送HTTP请求主要是调用 System.Net的HttpWebResponse方法 手工发送HTTP的GET请 求: string strURL = &q ...

  3. iOS中发送HTTP请求的方案

    在iOS中,常见的发送HTTP请求的方案有 苹果原生(自带) NSURLConnection:用法简单,最古老最经典的一种方案 NSURLSession:功能比NSURLConnection更加强大, ...

  4. golang中发送http请求的几种常见情况

    整理一下golang中各种http的发送方式 方式一 使用http.Newrequest 先生成http.client -> 再生成 http.request -> 之后提交请求:clie ...

  5. rails中发送ajax请求

    最近在写一个blog系统练练手,遇到一个一个问题,用户添加评论的时候想发送ajax请求,但是rails里的ajax和Python中的不太一样,Python中的ajax是用js,jquery实现的和ra ...

  6. IE6—在链接click事件的响应函数中发送jsonp请求不生效

    $("#link").click(function(){     $.ajax({         type: 'GET',         dataType: 'jsonp', ...

  7. java中发送http请求的方法

    package org.jeecgframework.test.demo; import java.io.BufferedReader; import java.io.FileOutputStream ...

  8. python中发送post请求时,报错“Unrecognized token 'xxxx': was expecting ('true', 'false' or 'null')”

    解决办法: 如请求参数为 data={“user”=“aaa”,“pwd”=“123456”,sign=“00000000000000”} 需要将参数data先做处理,调用函数datas=datajs ...

  9. Js/Ajax中发送HttpPost请求调用WebService

    1) WebService中的方法 [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(Confo ...

随机推荐

  1. 如何高效利用 GitHub

    正是 Github,让社会化编程成为现实.本文尝试谈谈 GitHub 的文化.技巧与影响. Q1:GitHub 是什么 Q2:GitHub 风格 Q3: 在 GitHub,如何跟牛人学习 Q4: 享受 ...

  2. Laravel框架中Validor中错误信息$error的输出

    @if (count($errors) > 0) <div class="alert alert-danger"> <ul> @foreach ($e ...

  3. L193

    Real generosity toward the future lies in giving all to the present.将一切奉献给当下,就是对未来的真正慷慨.The wheels o ...

  4. protel 99se 加载库文件 files not recognised 解决办法-转

    WIN7操作系统下,protel99se添加元件库的操作方法(非修改ADVSch99SE方法) 最近更换了新电脑,操作系统是正版的WIN7,在用protel时发现元件库无法加载,很是郁闷,上网查找解决 ...

  5. Cause: org.postgresql.util.PSQLException: ERROR: cached plan must not change result type的前因后果

    首先说明一下遇到的问题: PG数据库,对其中的某张表增加一列后,应用报错,信息如下: 应用使用相关框架如下:SpringBoot.MyBatis. ### Cause: org.postgresql. ...

  6. Machine Learning 方向读博的一些重要期刊及会议 && 读博第一次组会时博导的交代

    读博从报道那天算起到现在已经3个多月了,这段时间以来和博导总共见过两次面,寥寥数语的见面要我对剩下的几年读书生活没有了太多的期盼,有些事情一直想去做却总是打不起来精神,最后挣扎一下还是决定把和博导开学 ...

  7. CF1143C Queen

    CF1143C Queen 开始想大力维护 \(bfs\) 序+数据结构解决,但 \(bfs\) 序的变化不太好推. 换了一个思路,注意到删除一个点后,原来可以被删除的点仍然可以被删除,原来不能被删除 ...

  8. C# 空合并操作符(??)不可重载?其实有黑科技可以间接重载!

    ?? 操作符叫做 null-coalescing operator,即 null 合并运算符.如果此运算符的左操作数不为 null,则此运算符将返回左操作数:否则返回右操作数. 在微软的官方 C# 文 ...

  9. Testng优势

    选择Testng的理由: 1.可指定执行顺序, dependsOnMethods 属性来应对测试的依赖性问题. 2.·参数化1:轻轻松松从XML中得到参数 @BeforeClass public vo ...

  10. python eval, exec. compile

    compile 编译某段代码, (将一个字符串编译为字节代码), 以方便重复调用. exec 可以理解为和if, for一样是一个语法声明, 而不是一个函数. 注意globals和locals的含义. ...