VBA MSXML2打开成员POST

时间:2014-02-10 10:31:12

标签: excel vba excel-vba

在此代码snipet示例中......

Dim pullSite As String
Dim pullXMLHTTP As MSXML2.XMLHTTP
Set pullXMLHTTP = New MSXML2.XMLHTTP

pullSite = "http://www.ThisIsASite.com/Documents/whatever........xml"

pullXMLHTTP.Open "POST", strXMLSite, False

...我在代码中遇到单词Open,我认为这是一种方法,因为它不等于任何东西(在左下角的OB屏幕中,一旦选择它说它是一个Sub但是我休息我的情况在OB命名方法上作为Sub和Function-我想它想说这是一个类浏览器所以我们将方法声明为Sub或Function就像我们“自定义”在类模块中制作它们但我不确定那样) 。如果我转到MSXML2库中的对象浏览器,我将在XMLHTTP中找到作为成员列出的Open。

好吧,如果我点击F1 VBA的帮助有3个选择。第一选择(VBA库)一个告诉我这是开放声明,显然不是。

第二个选项(Excel库)有一个 RecentFile .Open方法没有参数,因此它也不会购买。

第三个选项(Office Library)为我提供了Developer Reference主菜单。

因此,F1 VBA的Auto帮助对MSXML2库没有任何帮助。但是在OB的左下角,如果我从MSXML2.XMLHTTP库中选择Open Member,则说明

Sub open(bstrMethod As String, bstrUrl As String, [varAsync], [bstrUser], [bstrPassword])
    Member of MSXML2.XMLHTTP
    Open HTTP connection

所以我的问题是双重的

  • 是否有一个可靠的帮助来详细记录MSXML2库的成员/或者在VBA的Autohelp上添加它? (顺便说一句,微软MSXML开发中心MSXLM是庞大而模糊的。我也相信它指向经验丰富的暗示......

  • 为什么我在使用MSXML2.HTTP Open成员的相关示例中看到,第一个字符串参数始终填充了单词“POST”in上限字母?这让我难以置信 - 他们不能使用另一个String值吗?

在@codeape提交的答案之后:

亲爱的代码,所以根据你的回答,我们有

open Method (IXMLHTTPRequest) 

并且现有VBA示例中的参数(MS缺少) all-together 形成IXMLHTTPRequest,因此:

Open methods Paramenters --> IXMLHTTPRequest

请确认这是否属实,以便我会在更方便用户使用的所有已确认的说明中编辑此帖子,供其他人使用。

此外,我无法帮助我的好奇心为什么我们在IXMLHTTPRequest命名中有 I ?只是想知道...

关于POST问题感谢您的回答我用Google搜索了HTTP方法,并在W3Schools中找到了这个简洁的链接,这在很大程度上向我解释。真的为什么不使用GET?它看起来更快速...而不是提交要由指定源处理的数据(使用POST)只需要在一个笔划中请求来自指定源的数据,它看起来更加迅速和简单......


Oooups我差点忘了在你给我的开放方法链接以及OB的底部我们看到bstrMethod As String,bstrUrl As String等。你能告诉我 bstr 是什么意思吗? - BSTR是指基本字符串还是二进制字符串?请确认

1 个答案:

答案 0 :(得分:0)

  1. XMLHTTP的文档是here。请注意,文档页面适用于IXMLHTTPRequest接口。 MSXML.XMLHTTP实现了这个接口。
  2. Open方法的第一个参数是HTTP方法,即GET或POST(或PUT,DELETE等)。
  3. 可悲的是,在记录各种COM库时,MS似乎忘记了VBA。大部分/全部文档适用于C ++和javascript。

    对问题中提到的其他事项的评论:

    • IXMLHTTPRequest中的“I”是COM中用于命名接口的命名约定。
    • 关于HTTP方法(GET,POST等):

      • 服务器端代码决定如何解释和响应HTTP请求。
      • 当您在浏览器的URL栏中键入URL时,浏览器会向服务器发送GET请求。因此,如果您想使用MSXML.XMLHTTP获取网页,请执行以下操作:obj.Open "GET", "http://www.google.com"

      • 当您从浏览器提交HTML表单时,浏览器可以根据<form>标记的方法属性发送GET或POST请求。 <form method="GET">(默认值)或<form method="POST">

      • 页面上的Javascript可以使用任何HTTP方法使用XMLHTTPRequest发送AJAX请求。
    • 关于参数名称bstrMethod等:这是hungarian notation,其中参数的预期类型反映在参数的名称中,以使开发人员更容易。 bstr表示此参数是COM“basic string”。 COM通常用于unicode字符串的基本字符串。在VBA中,您可以使用常规VBA字符串,其中方法需要bstr。