vb使用MSXML组件和SOAP消息连接并调用WebService

 一、MSXML和SOAP简介

  • 在Visual Studio等开发环境中,开发人员可以通过引用MSXML库,并在代码中创建MSXML对象来加载、操作和保存XML文档。例如,可以使用MSXML2.DOMDocument对象来加载XML文件,并使用其提供的方法和属性来访问和修改XML数据。
  • SOAP消息通常用于Web服务的调用和响应。当客户端需要调用服务器上的Web服务时,它会构造一个SOAP请求消息,并将其发送给服务器。服务器接收到请求后,会处理请求并构造一个SOAP响应消息返回给客户端。SOAP消息可以通过HTTP、SMTP等协议进行传输,这使得它可以在不同的网络环境中使用。
  • 在处理SOAP消息时,MSXML组件可以被用来解析、验证、转换和查询SOAP消息的XML内容。开发人员可以使用MSXML提供的API和接口来操作SOAP消息的XML结构,从而实现Web服务的调用和响应。

二、实例举例

下面是在VB中使用Microsoft XML 3.0插件请求获取解析web service的实例。

' 引用MSXML组件

    Dim xmlhttp As MSXML2.ServerXMLHTTP
    Dim soapEnvelope As String
    Dim url As String
    Dim xmlResponse As String
    Dim xmlDoc As MSXML2.DOMDocument
    Dim nodeList As MSXML2.IXMLDOMNodeList
    Dim node As MSXML2.IXMLDOMNode
    Dim i As Integer
    Dim strXML As String
    Dim str会诊结果 As String
    ' 初始化MSXML对象
    Set xmlhttp = New MSXML2.ServerXMLHTTP
    Set xmlDoc = New MSXML2.DOMDocument
  
    ' 设置Web Service的URL
    url = "http://pacs.zjgws.com:8132/riswebservice.asmx?DXDL"
  
    ' 构造SOAP请求消息
    soapEnvelope = "<?xml version='1.0' encoding='utf-8'?>" & _
                   "<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/'>" & _
               "<soap:Body>" & _
               "<PatientRegister_Xml xmlns='http://tempuri.org/'>" & _
               "<op>OP005</op>" & _
               "<inputXml><![CDATA[" & str版本信息 & "]]></inputXml>" & _
               "</PatientRegister_Xml>" & _
               "</soap:Body>" & _
               "</soap:Envelope>"
  
  
    ' 设置HTTP请求头
    xmlhttp.Open "POST", url, False
    xmlhttp.setRequestHeader "Content-Type", "text/xml; charset=utf-8"
    xmlhttp.setRequestHeader "SOAPAction", "http://tempuri.org/PatientRegister_Xml"
  
    ' 发送SOAP请求
    xmlhttp.send soapEnvelope
  
    ' 获取并处理响应
    xmlResponse = xmlhttp.responseText
    If xmlhttp.Status = 200 Then
        ' 请求成功,处理返回的SOAP响应
        If xmlDoc.loadXML(xmlResponse) Then
            ' XML加载成功,开始解析
            Set nodeList = xmlDoc.getElementsByTagName("PatientRegister_XmlResult")
            For i = 0 To nodeList.Length - 1
                Set node = nodeList.Item(i)
                strXML = node.Text
            Next i
            
            gddtXml.loadXML strXML
      If gddtXml.selectNodes("//Response/Report/ConsultationStatus").Item(0).Text = 1 Then
        txt检查所见.Text = gddtXml.selectNodes("//Response/Report/Description").Item(0).Text
        txt诊断意见.Text = gddtXml.selectNodes("//Response/Report/Impression").Item(0).Text
        txt报告结果.Text = IIf(gddtXml.selectNodes("//Response/Report/Abnormalflag").Item(0).Text = 1, "阳性", "阴性")
        If txt报告结果.Text = "阳性" Then
            txt报告结果.BackColor = "&H000000FF&"
        End If
        txt报告人.Text = gddtXml.selectNodes("//Response/Report/Consultationdoc").Item(0).Text
        Label7.Caption = "会诊医生"
        txt报告时间.Text = gddtXml.selectNodes("//Response/Report/Consultationdate").Item(0).Text
        Label16.Caption = "会诊日期"
      Else
                MsgBox "未会诊!", vbInformation, gstrSysName
                         
      End If

        Else
            ' XML加载失败,处理错误
            Debug.Print "Error loading XML response: " & xmlDoc.parseError.reason
        End If
        
    Else
        ' 请求失败,处理错误
        Debug.Print "Error: " & xmlhttp.Status & " - " & xmlhttp.statusText
    End If
  
    ' 清理
    Set node = Nothing
    Set nodeList = Nothing
    Set xmlDoc = Nothing
    Set xmlhttp = Nothing

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值