ASP調用WEBSERVICE並對返回結果進行解析時遇到的問題


 

項目上用動易平台做新聞發布網站,動易平台是用ASP做的,期間需要根據當前登錄的用戶,取其他系統比如OA的待辦事項進行列表展示,OA組的同事給了我一個WSDL接口,百度了很多ASP調用webservice的例子,但是不是這里出錯就是那里出錯,特此記錄一下。

我要調用的webservice接口是這樣的

最開始想采用soap toolkit的做法,說是很簡單,借鑒這篇博客http://blog.csdn.net/sy_binbin/article/details/3984498

但是我用了之后,發現不報錯,但是頁面也沒反應,一片空白,然后就放棄了。

然后選擇xmlhttp發送request請求的方式,也有很多經典的例子,但是對比之后人家的參數都是可以帶入到“<username></username>”或者<password></password>”中的,我這個壓根兒就沒找到參數怎么帶,我就嘗試使用“USERSORTNAME&用戶名”的方式發送請求,

發現總是報prolog不允許有內容,這是什么錯誤呢?一直查也沒弄出個所以然,最后沒辦法就去請教大神,大神給調試了一會兒,在我錯誤的頁面打開了F12,然后發現下面的內容是這樣的

然后,大神好像忽然明白了什么,然后說請求要按照人家的這種格式寫,才對,然后我的代碼被改成了這個樣子

 

 

 

 然后,調用webservice就成功了,返回結果

終於有反應了,然后我就屁顛屁顛的回去了。

/****************************************************************分割線***********************************************************************/

以為我用asp解析個xml的東西還是不在話下的,結果又被現實給擊敗了,我的目標是拿到todoCount中的0,

先是使用msxml2.domdocument,使用xmldoc.documentElement.selectNodes,或者getElementsByTagName(),但是不是找不到對象,就是方法不對,或者沒有默認屬性之類的,連nodevalue,nodename之類的有時候都不能使用,

 

然后嘗試使用了Microsoft.XMLDOM對象

set objDom=server.CreateObject("MicroSoft.XMLDom")
objDom.loadxml(xmlhttp.responseText)

objDom.documentElement.SelectSingleNode("//people/man")的方法,也是找不到對象,找不到方法什么的,我都暈菜了,

然后現將返回的數據給保存了一下發現,內容不是簡單的呈現在網頁上的返回數據,外面依然帶有請求的那些個<soapenv:Envelope>,<soapenv:Body>等標簽,網頁輸出的responseText被包含在其中了,所以直接拿viewtodo標簽拿不到,

 

后來才發現這都不是問題,最大的問題在於,我使用的xmldoc.documentElement.getSingleNode()方法時,沒有一級一級的往下找,意思就是使用這個方法時,要逐級的使用"/"隔開,最后是這個樣子的

objDom.documentElement.SelectSingleNode("//soapenv:Envelope/soapenv:Body/ns1:GETTODOCOUNTResponse/GETTODOCOUNTReturn").text

然后就拿到了網頁上那堆東西,然后將它再用Microsoft xmldom對象再load一下,再解析一下,就好了。

獲得屬性節點:GetAttributeNode("todoCount")

屬性節點的節點名和節點值:nodename和nodevalue

此次記錄主要兩點:1、asp調用webservice時,格式很重要。2、解析返回數據時,拿到節點很重要,如果拿不到節點,使用nodevalue,nodename,text方法時,就會提示找不到對象,沒有方法之類的錯誤,拿到之后這種錯誤就迎刃而解了。

此次記錄完畢。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM