[转]直接使用XML做SOAP请求
2007-03-04 23:48
295 查看
'保持属性值的局部变量
Private mvarServerURL As String '局部复制
Public Property Let ServerURL(ByVal vData As String)
'向属性指派值时使用,位于赋值语句的左边。
'Syntax: X.ServerURL = 5
mvarServerURL = vData
End Property
Public Property Get ServerURL() As String
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.ServerURL
ServerURL = mvarServerURL
End Property
Public Function ExecuteCommandWithReturn(ByVal Command As String) As String
Dim safeString As String '身份验证码
Dim strXML As String 'SOAP查询
'On Error GoTo Errs:
On Error Resume Next
safeString = LCase(Replace("592672-016767-2CC4F321-0E348AF1-AB52FF57-E07A", "-", ""))
' Command = Replace(Command, " ", " ")
' Command = Replace(Command, "'", "'")
' Command = Replace(Command, """", """)
' Command = Replace(Command, "<", "<")
' Command = Replace(Command, ">", "&rt;")
' Command = Replace(Command, "&", "&")
strXML = strXML & "<?xml version=""1.0"" encoding=""utf-8""?>" & vbCrLf
strXML = strXML & "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" & vbCrLf
strXML = strXML & " <soap:Body>" & vbCrLf
strXML = strXML & " <ExecuteCommandWithReturn xmlns=""http://tempuri.org/GPSService/Data"">" & vbCrLf
strXML = strXML & " <SafeCode>" & safeString & "</SafeCode>" & vbCrLf
strXML = strXML & " <CommandText>" & Command & "</CommandText>" & vbCrLf
strXML = strXML & " </ExecuteCommandWithReturn>" & vbCrLf
strXML = strXML & " </soap:Body>" & vbCrLf
strXML = strXML & "</soap:Envelope>"
'定义一个XML HTTP Request对象,用于发送请求
Dim soapHTTP As New MSXML.XMLHTTPRequest
'定义一个XML的文档对象,将手写的或者接受的XML内容转换成XML对象
Dim soapXML As New MSXML.DOMDocument
'将手写的SOAP字符串转换为XML对象
soapXML.loadXML strXML
'向指定的URL发送Post消息
soapHTTP.open "POST", mvarServerURL & "", False
soapHTTP.setRequestHeader "Content-Type", "text/xml;charset=utf-8"
'soapHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 1.1.4322.2300)"
soapHTTP.setRequestHeader "SOAPAction", "http://tempuri.org/GPSService/Data/ExecuteCommandWithReturn"
soapHTTP.send (strXML)
While soapHTTP.readyState <> 4 '等待处理完毕
Wend
'返回的XML信息
Dim strReturn As String
'Debug.Print soapHTTP.responseText
Dim XMLReturn As MSXML.DOMDocument
Set XMLReturn = soapHTTP.responseXML
ExecuteCommandWithReturn = XMLReturn.childNodes(1).Text
Set XMLReturn = Nothing
Set soapXML = Nothing
Set soapHTTP = Nothing
Exit Function
Errs:
MsgBox Err.Description
Debug.Print Err.Description
End Function
Private mvarServerURL As String '局部复制
Public Property Let ServerURL(ByVal vData As String)
'向属性指派值时使用,位于赋值语句的左边。
'Syntax: X.ServerURL = 5
mvarServerURL = vData
End Property
Public Property Get ServerURL() As String
'检索属性值时使用,位于赋值语句的右边。
'Syntax: Debug.Print X.ServerURL
ServerURL = mvarServerURL
End Property
Public Function ExecuteCommandWithReturn(ByVal Command As String) As String
Dim safeString As String '身份验证码
Dim strXML As String 'SOAP查询
'On Error GoTo Errs:
On Error Resume Next
safeString = LCase(Replace("592672-016767-2CC4F321-0E348AF1-AB52FF57-E07A", "-", ""))
' Command = Replace(Command, " ", " ")
' Command = Replace(Command, "'", "'")
' Command = Replace(Command, """", """)
' Command = Replace(Command, "<", "<")
' Command = Replace(Command, ">", "&rt;")
' Command = Replace(Command, "&", "&")
strXML = strXML & "<?xml version=""1.0"" encoding=""utf-8""?>" & vbCrLf
strXML = strXML & "<soap:Envelope xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:xsd=""http://www.w3.org/2001/XMLSchema"" xmlns:soap=""http://schemas.xmlsoap.org/soap/envelope/"">" & vbCrLf
strXML = strXML & " <soap:Body>" & vbCrLf
strXML = strXML & " <ExecuteCommandWithReturn xmlns=""http://tempuri.org/GPSService/Data"">" & vbCrLf
strXML = strXML & " <SafeCode>" & safeString & "</SafeCode>" & vbCrLf
strXML = strXML & " <CommandText>" & Command & "</CommandText>" & vbCrLf
strXML = strXML & " </ExecuteCommandWithReturn>" & vbCrLf
strXML = strXML & " </soap:Body>" & vbCrLf
strXML = strXML & "</soap:Envelope>"
'定义一个XML HTTP Request对象,用于发送请求
Dim soapHTTP As New MSXML.XMLHTTPRequest
'定义一个XML的文档对象,将手写的或者接受的XML内容转换成XML对象
Dim soapXML As New MSXML.DOMDocument
'将手写的SOAP字符串转换为XML对象
soapXML.loadXML strXML
'向指定的URL发送Post消息
soapHTTP.open "POST", mvarServerURL & "", False
soapHTTP.setRequestHeader "Content-Type", "text/xml;charset=utf-8"
'soapHTTP.setRequestHeader "User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; MS Web Services Client Protocol 1.1.4322.2300)"
soapHTTP.setRequestHeader "SOAPAction", "http://tempuri.org/GPSService/Data/ExecuteCommandWithReturn"
soapHTTP.send (strXML)
While soapHTTP.readyState <> 4 '等待处理完毕
Wend
'返回的XML信息
Dim strReturn As String
'Debug.Print soapHTTP.responseText
Dim XMLReturn As MSXML.DOMDocument
Set XMLReturn = soapHTTP.responseXML
ExecuteCommandWithReturn = XMLReturn.childNodes(1).Text
Set XMLReturn = Nothing
Set soapXML = Nothing
Set soapHTTP = Nothing
Exit Function
Errs:
MsgBox Err.Description
Debug.Print Err.Description
End Function
相关文章推荐
- 掌握 Ajax,第 8 部分: 在请求和响应中使用 XML
- 使用SOAP的XML消息传递
- 掌握 Ajax,第 7 部分: 在请求和响应中使用 XML 了解什么时候适合什么时候不适合使用 XML
- eclipse的Format配置文件xml格式化标准,可直接导入使用ctrl+shift+F
- 掌握 Ajax,第 7 部分: 在请求和响应中使用 XML
- 使用Retrofit打印请求日志,过滤改变服务器返回结果,直接获取String字符串
- 通过soap请求webservice时,返回的数据是XML类型,有时候也需要解析本地的xml数据等,苹果自带类NSXMLParser解析xml还是很方便的,简单轻便
- 掌握 Ajax,第 8 部分: 在请求和响应中使用 XML
- Kotlin 无法直接使用xml中的ID
- 掌握 Ajax,第 7 部分: 在请求和响应中使用 XML
- 掌握 Ajax,第 8 部分: 在请求和响应中使用 XML
- 使用JavaScript的XMLHttpRequest发送请求
- java调用webservice天气预报(SOAP请求的方式获取天气信息并解析返回的XML)
- WebService大讲堂之Axis2(10):使用soapmonitor模块监视soap请求与响应消息
- 掌握 Ajax,第 8 部分: 在请求和响应中使用 XML
- ajax学习系列之七: 在请求和响应中使用 XML (1)
- 使用XMLHttpRequest对象完成原生的AJAX请求
- 使用ASMX的XML Web服务与使用SOAP的.NET Remoting的区别
- java调用webservice天气预报(SOAP请求的方式获取天气信息并解析返回的XML)
- 掌握 Ajax,第 8 部分: 在请求和响应中使用 XML(2)