zoukankan      html  css  js  c++  java
  • 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方法时,就会提示找不到对象,没有方法之类的错误,拿到之后这种错误就迎刃而解了。

    此次记录完毕。

  • 相关阅读:
    静态方法中访问类的实例成员
    Java Interger类,两对整数明明完全一样,为何一个输出true,一个输出false
    使用类的静态字段和构造函数,跟踪某个类所创建对象的个数
    Java基础笔记3
    Java 统计单词频数
    重拾javaweb(假期后第一次web测试)
    人月神话读后感(三)
    人月神话读后感(二)
    人月神话读后感(一)
    七天开发安卓软件(七)
  • 原文地址:https://www.cnblogs.com/liujiekun/p/7808919.html
Copyright © 2011-2022 走看看