项目上用动易平台做新闻发布网站,动易平台是用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方法时,就会提示找不到对象,没有方法之类的错误,拿到之后这种错误就迎刃而解了。

此次记录完毕。

ASP调用WEBSERVICE并对返回结果进行解析时遇到的问题的更多相关文章

  1. ASP调用WebService转化成JSON数据,附json.min.asp

    首先定义SOAP数据,然后创建HTTP对象,然后使用POST提交,获取状态码为200,就说明调用成功,再进行下一步操作…… <!--#Include virtual="/Include ...

  2. 动态调用WebService(传对象返回接受对象)

    基础属性//客户端代理服务命名空间,可以设置成需要的值. string ns = string.Format("WindowsForms"); private Assembly a ...

  3. C++ 调用webservice 出现 函数返回值为 3 (SOAP_TAG_MISMATCH) 的解决方案

    最近在用C++ gsoap做webservice服务时,函数返回值为SOAP_TAG_MISMATCH (==3)错误码,原因是我传入wsdl地址时连同后面的?wsdl都传入了,如下: http:// ...

  4. JAVA调用系统命令或可执行程序--返回一个Runtime运行时对象,然后启动另外一个进程来执行命令

    通过 java.lang.Runtime 类可以方便的调用操作系统命令,或者一个可执行程序,下面的小例子我在windows和linux分别测试过,都通过.基本原理是,首先通过 Runtime.getR ...

  5. C# 调用 C++ 的 DLL 返回值为 bool 时,值混乱

    现象:C++ 导出函数的返回值为 false,C# 调用该函数获取的返回值却为 true . 原因:C++ 导出函数返回 false 时,采取的方式是: 将 C# 定义的用来接收返回值的 bool 所 ...

  6. C#调用JS的WebService的方法返回null

    连上了别人的VPN后,使用WebService测试软件测试了一下,结果正常,但是当我在vs里面添加WebService服务,调用的时候就出现了问题,问题如下图: 后来问了一下服务端那边的同事,他们说服 ...

  7. 第十五章:Android 调用WebService(.net平台)

    什么是webservice? Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和 ...

  8. Android 调用webService(.net平台)

    什么是webservice? Web service是一个平台独立的,低耦合的,自包含的.基于可编程的web的应用程序,可使用开放的XML(标准通用标记语言下的一个子集)标准来描述.发布.发现.协调和 ...

  9. C# 动态调用 WebService (转)

    在 Visual Studio 中客户端程序可以添加服务引用来调用 WebService,这样 Visual Studio 会生成与之相关的代理类,通过这个代理类可以很方便的访问所需要的服务. 如果服 ...

随机推荐

  1. Android Json转换类对象,并使用

    长话短说,先上代码(今天的代码是有史以来最短的)(今天的课也是有史以来最精简...) 然后就是介绍Song是啥,上面的网站应该知道,是网易云的,不过为啥会变成这样,因为这是网易云的API网站 反正就是 ...

  2. MySQL--->数据库的简介和安装

    1.什么是MySQL: MySQL是一个小型关系型数据库管理系统,开发者伟瑞典MySQL AB公司. 目前MySQL被广泛的应用在Internet上的中小型网站中.由于体积小,速度快,总体拥有成本低, ...

  3. JVM初探(三):类加载机制

    一.概述 我们知道java代码会被编译为.class文件,这里class文件中的类信息最终还是需要jvm加载以后才能使用. 事实上,虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转 ...

  4. 重回OI的第一篇博客

    太久没学OI了, 代码都不会写了, 先写一篇BFS练练手, 是我太菜了qwq #include<cstdio> #include<queue> #include<iost ...

  5. 初识ABP vNext(5):ABP扩展实体

    Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章. 目录 前言 开始 扩展实体 路由整理 最后 前言 上一篇实现了前端vue部分的用户登录和菜单权限控制,但是有一些问题需要解决,比如用户头 ...

  6. eclipse git提交项目以及down项目大致步骤

    down git项目步骤: 复制了url之后,import projects项目选中from git ,会出现如下截图,信息会自动填充 填好信息一直Next即可 完成之后,打开“Git Reposit ...

  7. archlinux安装kde

    联网 dhcpcd & 配置国内源 打开文件 nano /etc/pacman.conf 在文件最后加上这段 [arhclinuxcn] Server = https://mirrors.tu ...

  8. Java高级特性——反射机制(完结)——反射与注解

    按照我们的学习进度,在前边我们讲过什么是注解以及注解如何定义,如果忘了,可以先回顾一下https://www.cnblogs.com/hgqin/p/13462051.html. 在学习反射和注解前, ...

  9. JVM大作业5——指令集

    JVM的每一个线程都有一个虚拟机栈,方法调用时,JVM会在虚拟机栈内为该方法创建一个栈帧. 一条线程,只有正在执行的方法对应的栈帧时可活动的,这个栈帧被称为当前栈帧,当前栈帧对应的方法被称为当前方法, ...

  10. Vue基础(三)---- 组件化开发

    基本结构: ◆1.组件化开发思想 ◆2.组件注册 ◆3.Vue调试工具用法 ◆4.组件间数据交互 ◆5.组件插槽 ◆6.基于组件的案例   ◆1.组件化开发思想 优点: 提高开发效率 方便重复使用 简 ...