Excel如何调用JWS(Java Webservice)

   最近需要用到Excel调用JAVA Webservice,一开始用VBA调用.Net写的Webservice,例如:

   

    Dim objSoapClient As New SoapClient
    
    objSoapClient.ClientProperty("ServerHTTPRequest") = True
   
    objSoapClient.mssoapinit ("http://svr-015:60/MMS/CalMetrics.asmx?WSDL")
    s = objSoapClient.HelloWorld()
    
    出现错误:WSDLReader:XML   Paser   failed   at   linenumber1,lineposition   5,reason   is:Invalid   xml   declaration。

 

    解决方法:放弃用SoapClient,改用"MSXML2.XMLHTTP",具体参考如下代码:


 

    'get方式调用JWS
    Set objhttp = CreateObject("MSXML2.XMLHTTP")
    Set xmlDOC = CreateObject("MSXML.DOMDocument")

    strWebserviceURL = "http://se.hundsun.com/axis/services/JiraService?method=getProject"
    
    '设置参数及值   
    objhttp.Open "get", strWebserviceURL, False
   
    '设置Content-type,很重要
    objhttp.setRequestHeader "Content-Type", "text/xml;charset=utf-8"
    objhttp.send (strWebserviceURL)
    bOK = xmlDOC.Load(objhttp.responseXML)
   
    '判断状态
    If objhttp.Status = 200 Then
'        xmlstr = xmlDOC.XML
        ConvDatasetToRecordsetProject xmlDOC    '解析XML
    End If

   


Public Function ConvDatasetToRecordsetProject(ByVal voNL As DOMDocument)
    Err.Clear
    On Error GoTo ErrHandle
   
    Application.Cursor = xlWait
   
    Dim iXMLValueNode As IXMLDOMNode
    Dim iXMLNodeList As IXMLDOMNodeList

    Set iXMLNodeList = voNL.selectNodes("soapenv:Envelope/soapenv:Body/multiRef")

    Dim str As String
    For Each iXMLValueNode In iXMLNodeList
            str = iXMLValueNode.childNodes.Item(1).Text + "/" + iXMLValueNode.childNodes.Item(0).Text
            proList.AddItem str
    Next
   
    Application.Cursor = xlDefault

   
ExtSub:
 
    Exit Function
   
ErrHandle:
    Application.Cursor = xlDefault
    MsgBox Err.Description, vbCritical + vbOKOnly
    GoTo ExtSub


End Function


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值