vba用http发送xml所需技术
2014-03-26 12:51
246 查看
1.代理(invoke)
CallByName 函数
•执行一个对象的方法,或者设置或返回一个对象的属性。
•语法
•CallByName(object, procname, calltype,[args()])
•CallByName 函数的语法有以下命名参数:
<补充> 1).Calltype:vbMethod,VbGet,VbLet,VbSet
2).CallByName obj, methodName, VbMethod, args
2.数据结构
Public Type SqlInfo
sql As String
resultSet() As Object
End Type
3.Create XML
Private Sub sbCreateCommonXML(ByRef xmlDoc As MSXML2.DOMDocument, ByRef node() As IXMLDOMNode)
Dim xmlPI As IXMLDOMProcessingInstruction
ReDim Preserve node(2)
Set xmlDoc = New MSXML2.DOMDocument
Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8"""))
Set node(0) = xmlDoc.appendChild(xmlDoc.createNode(NODE_ELEMENT, "SmartProxyInfo", ""))
Set node(1) = node(0).appendChild(xmlDoc.createNode(NODE_ELEMENT, "ConnectionInfo", ""))
End Sub
4.向XML中填入值
Private Sub sbSetLoginInfoXML(ByRef xmlDoc As MSXML2.DOMDocument, ByRef node As IXMLDOMNode)
node.appendChild(xmlDoc.createNode(NODE_ELEMENT, "userid", "")).Text = dataAccessUser
node.appendChild(xmlDoc.createNode(NODE_ELEMENT, "password", "")).Text = dataAccessPass
If dataAccessGuid <> "" Then
node.appendChild(xmlDoc.createNode(NODE_ELEMENT, "token", "")).Text = dataAccessGuid
End If
End Sub
5.用HTTP发送XML
-通常定义:XmlHttp提供客户端同http服务器通讯的协议。客户端可以通过XmlHttp对象(MSXML2.XMLHTTP.3.0)向http服务器发送请求并使用微软XML文档对象模型Microsoft® XML Document Object Model (DOM)处理回应。
-MSDN定义: XmlHttp是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不整个需要刷新页面。
XmlHttp对象参考:
属性:
onreadystatechange* 指定当readyState属性改变时的事件处理句柄。只写
readyState 返回当前请求的状态,只读.
responseBody 将回应信息正文以unsigned byte数组形式返回.只读
responseStream 以Ado Stream对象的形式返回响应信息。只读
responseText 将响应信息作为字符串返回.只读
responseXML 将响应信息格式化为Xml Document对象并返回,只读
status 返回当前请求的http状态码.只读
statusText 返回当前请求的响应行状态,只读
* 表示此属性是W3C文档对象模型的扩展.
方法:
abort 取消当前请求
getAllResponseHeaders 获取响应的所有http头
getResponseHeader 从响应信息中获取指定的http头
open 创建一个新的http请求,并指定此请求的方法、URL以及验证信息(用户名/密码)
send 发送请求到http服务器并接收回应
setRequestHeader 单独指定请求的某个http头
6.解析XML
1)Dim objDOM As New MSXML2.DOMDocument
Dim rtResult As Variant
rtResult = objDOM.LoadXML(responseText)
objDOM.SelectNodes("/SmartProxyInfo/Message")(0)
•返回值
•包含了匹配查询的节点的一个 NodeList。
•说明
•这个特定于 IE 的方法计算一个 XPath 表达式,使用该节点作为查询的根节点,并且将结果作为一个 NodeList 返回。这个 selectNodes() 方法只用于 XML 文档节点,不用于 HTML 文档节点。注意,既然 Document 对象是它们自己的节点,这个方法可以应用于整个 XML 文档。
2)接着放入集合-CreateObject("Scripting.Dictionary")再投入到queryInfo.resultSet 中
7.读取本地ini文件
Dim iniBuf As String * 200
Call GetPrivateProfileString("DataAccessService", dataAccessName, "", iniBuf, Len(iniBuf), ThisWorkbook.Path & "\LoginInfo.ini")
dataAccessUrl = Left$(iniBuf, InStr(1, iniBuf, vbNullChar) - 1)
GetPrivateProfileString(WIN API):
意思是为初始化文件中指定的条目取得字串。它是编辑语言中的一种函数结构。
8.计算程序运行时间
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Dim startTime As Long
startTime = timeGetTime()
Debug.Print "start : " + methodName
-----运行的代码块------
Debug.Print "end : " + methodName + " - " + CStr(timeGetTime() - startTime) + "ms"
CallByName 函数
•执行一个对象的方法,或者设置或返回一个对象的属性。
•语法
•CallByName(object, procname, calltype,[args()])
•CallByName 函数的语法有以下命名参数:
部分 | 描述 |
object 必需的; | 变体型(对象)。函数将要执行的对象的名称。 |
procname 必需的; | 变体型(字符串)。一个包含该对象的属性名称或者方法名称的字符串表达式 |
calltype 必需的; | 常数。一个 vbCallType 类型的常数,代表正在被调用的过程的类型。 |
args() 可选的; | 变体型(数组)。 |
2).CallByName obj, methodName, VbMethod, args
2.数据结构
Public Type SqlInfo
sql As String
resultSet() As Object
End Type
3.Create XML
Private Sub sbCreateCommonXML(ByRef xmlDoc As MSXML2.DOMDocument, ByRef node() As IXMLDOMNode)
Dim xmlPI As IXMLDOMProcessingInstruction
ReDim Preserve node(2)
Set xmlDoc = New MSXML2.DOMDocument
Set xmlPI = xmlDoc.appendChild(xmlDoc.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8"""))
Set node(0) = xmlDoc.appendChild(xmlDoc.createNode(NODE_ELEMENT, "SmartProxyInfo", ""))
Set node(1) = node(0).appendChild(xmlDoc.createNode(NODE_ELEMENT, "ConnectionInfo", ""))
End Sub
4.向XML中填入值
Private Sub sbSetLoginInfoXML(ByRef xmlDoc As MSXML2.DOMDocument, ByRef node As IXMLDOMNode)
node.appendChild(xmlDoc.createNode(NODE_ELEMENT, "userid", "")).Text = dataAccessUser
node.appendChild(xmlDoc.createNode(NODE_ELEMENT, "password", "")).Text = dataAccessPass
If dataAccessGuid <> "" Then
node.appendChild(xmlDoc.createNode(NODE_ELEMENT, "token", "")).Text = dataAccessGuid
End If
End Sub
5.用HTTP发送XML
-通常定义:XmlHttp提供客户端同http服务器通讯的协议。客户端可以通过XmlHttp对象(MSXML2.XMLHTTP.3.0)向http服务器发送请求并使用微软XML文档对象模型Microsoft® XML Document Object Model (DOM)处理回应。
-MSDN定义: XmlHttp是一套可以在Javascript、VbScript、Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API。XmlHttp最大的用处是可以更新网页的部分内容而不整个需要刷新页面。
XmlHttp对象参考:
属性:
onreadystatechange* 指定当readyState属性改变时的事件处理句柄。只写
readyState 返回当前请求的状态,只读.
responseBody 将回应信息正文以unsigned byte数组形式返回.只读
responseStream 以Ado Stream对象的形式返回响应信息。只读
responseText 将响应信息作为字符串返回.只读
responseXML 将响应信息格式化为Xml Document对象并返回,只读
status 返回当前请求的http状态码.只读
statusText 返回当前请求的响应行状态,只读
* 表示此属性是W3C文档对象模型的扩展.
方法:
abort 取消当前请求
getAllResponseHeaders 获取响应的所有http头
getResponseHeader 从响应信息中获取指定的http头
open 创建一个新的http请求,并指定此请求的方法、URL以及验证信息(用户名/密码)
send 发送请求到http服务器并接收回应
setRequestHeader 单独指定请求的某个http头
6.解析XML
1)Dim objDOM As New MSXML2.DOMDocument
Dim rtResult As Variant
rtResult = objDOM.LoadXML(responseText)
objDOM.SelectNodes("/SmartProxyInfo/Message")(0)
•返回值
•包含了匹配查询的节点的一个 NodeList。
•说明
•这个特定于 IE 的方法计算一个 XPath 表达式,使用该节点作为查询的根节点,并且将结果作为一个 NodeList 返回。这个 selectNodes() 方法只用于 XML 文档节点,不用于 HTML 文档节点。注意,既然 Document 对象是它们自己的节点,这个方法可以应用于整个 XML 文档。
2)接着放入集合-CreateObject("Scripting.Dictionary")再投入到queryInfo.resultSet 中
7.读取本地ini文件
Dim iniBuf As String * 200
Call GetPrivateProfileString("DataAccessService", dataAccessName, "", iniBuf, Len(iniBuf), ThisWorkbook.Path & "\LoginInfo.ini")
dataAccessUrl = Left$(iniBuf, InStr(1, iniBuf, vbNullChar) - 1)
GetPrivateProfileString(WIN API):
意思是为初始化文件中指定的条目取得字串。它是编辑语言中的一种函数结构。
8.计算程序运行时间
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Dim startTime As Long
startTime = timeGetTime()
Debug.Print "start : " + methodName
-----运行的代码块------
Debug.Print "end : " + methodName + " - " + CStr(timeGetTime() - startTime) + "ms"
相关文章推荐
- Alax技术实现的基本原理——XMLHttpRequest对象的使用
- XMLHttpRequest发送XML请求
- Ajax核心XMLHttpRequest对象、(发送请求、接收)方法和属性介绍、AJAX开发框架、数据格式提要(XML、JSON、HTML)
- C# GET获取XML,然后寻找所需节点,修改成所需的值,再PUT发送
- JavaScript下通过的XMLHttpRequest发送请求的代码
- 《XMLHttpRequest对象-AJAX技术核心》
- Android实现XML解析技术 (转载http://www.cnblogs.com/hanyonglu/archive/2012/02/28/2370675.html)
- js_html_input中autocomplete="off"在chrom中失效的解决办法 使用JS模拟锚点跳转 js如何获取url参数 C#模拟httpwebrequest请求_向服务器模拟cookie发送 实习期学到的技术(一) LinqPad的变量比较功能 ASP.NET EF 使用LinqPad 快速学习Linq
- Ajax技术之Ajax重构(封装XMLHttpRequest)
- Ajax核心XMLHttpRequest对象、(发送请求、接收)方法和属性介绍、AJAX开发框架、数据格式提要(XML、JSON、HTML)
- AJAX中同时发送多个请求XMLHttpRequest对象处理方法
- IE浏览器中XMLHttpRequest对同一个URL只发送一个请求问题的解决。
- [导入]XMLHTTP / 核心技术介绍 (Second Step Study For AJAX)
- PB9.0 通过http协议以POST方式将XML发送到协议服务器
- 两种Web页面局部刷新技术IFRAME与XmlHttpRequest
- XMLHttpRequest发送JSON请求
- 使用XmlHttpRequest对象发送一次ajax请求
- ajax核心技术的简练总结——XMLHttpRequestd
- 通过http/https的POST方式,发送和接受XML文件内容
- XMLHTTP / 核心技术介绍 (Second Step Study For AJAX)