在.NET中的createDocumentFromUrl调用中包含post变量

时间:2011-11-28 20:54:53

标签: .net microsoft.mshtml ihtmldocument

我在Visual Basic 2010 Express中有一个项目,它使用IHTMLDocument对象解析网页。这是我用来检索网页的功能:

Private Function GetHTML(ByVal url As String)
    Dim htmldoc As New HTMLDocument()
    Dim ihtml2 As IHTMLDocument2
    Dim ihtml3 As IHTMLDocument3
    Dim iPersistStream As IPersistStreamInit

    iPersistStream = DirectCast(htmldoc, IPersistStreamInit)
    iPersistStream.InitNew()

    ihtml2 = htmldoc.createDocumentFromUrl(url, vbNullString)

    Do Until ihtml2.readyState = "complete"
        'required for htmlresult.readyState to transition from "loading" to "complete"
        System.Windows.Forms.Application.DoEvents()
    Loop
    ihtml3 = DirectCast(ihtml2, IHTMLDocument3)

    Return ihtml3
End Function

我基本上用这个函数来做这样的事情:

ihtml = GetHTML("www.blah.com?getvar1=x&getvar2=y")
ihtml.getElementsByTagName("A")
ihtml.getElementById("myel")
etc, etc...

当我检索HTML文档时,我正在试图弄清楚除了URL字符串之外我还可以包含POST变量。我的意思是我希望能够做到这样的事情:

ihtml = GetHTML("www.blah.com?getvar1=x&getvar2=y",["postvar1=a","postvar2=b"])

所以我想修改我现有的GetHTML函数,以便允许我包含post变量(如果可能的话),如果没有,我想知道是否有其他方法可以做到这一点。感谢任何可以提供帮助的人。

1 个答案:

答案 0 :(得分:0)

好的,我会使用WebCilentWebRequest但是......如果你致力于这个设计:

您必须导航到该页面,找到每个输入字段,设置该值,然后在该页面的按钮上调用InvokeMember。 WebBrowser就是自动化Web浏览器,而不是以编程方式发出HTTP请求。

示例代码: http://muftisubzero.blogspot.com/2010/12/playing-with-webbrowser-class-cnet.html