asp代码:
DataToSend="user=...&userpass=..."
postUrl = "....."
Set xmlhttp = server.Createobject("MSXML2.XMLHTTP")
xmlhttp.Open "POST",postUrl,false
xmlhttp.setRequestHeader "Content-Type","application/x-www-form-urlencoded"
xmlhttp.send DataToSend
If xmlhttp.Status = 200 Then
Set xmlDOC =server.CreateObject("MSXML.DOMDocument")
xmlDOC.load(xmlhttp.responseXML)
报错行→ Success = xmlDOC.documentElement.selectNodes("Success")(0).text
................ //这段代码其实就是想取返回的xml里几个结点的text值
end if
从webservice返回的xml,有两种,密码验证通过与报错。当下面第一种xml的时候,上面代码执行一切正常,但是当返回下面第二种xml时,就会出现报错——
Object required: 'documentElement'
输入密码校验通过:
<?xml version="1.0" encoding="utf-8" ?>
<AuthResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://....">
<Success>true</Success>
<PermissionLevel>50</PermissionLevel>
<Permissions>9999999999</Permissions>
<ErrorMessage />
</AuthResponse>
输入密码有错误:
<?xml version="1.0" encoding="utf-8" ?>
<AuthResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://.....">
<Success>false</Success>
<PermissionLevel>0</PermissionLevel>
<Permissions></Permissions>
<ErrorMessage>Account password invalid</ErrorMessage>
</AuthResponse>
那个webservice的直接url访问的话,无论密码正确与否出来的xml页面都是完全没问题的。
测了一下,xmlDOC.load(xmlhttp.responseXML)在返回第一种xml时为true第二种时为false... 囧 然后在第二种xml的时候,xmlhttp.responseXML貌似是啥也没取到?反正打印不出来,是空的,可是这个时候 用xmlhttp.responseText是完全取得出来返回的xml的(用response.write可以打印出来),看起来也完全没有问题,就是没法load进xmlDOC里!
xmlDOC.load(xmlhttp.responseText) 就会出错!
可是很奇怪,这俩xml有啥区别啊... 不是一样的么... orz
ps:返回的xml页面直接看起来貌似没问题,可我右键看页面源代码时,发现标签Permissions里面有奇怪的符号,不知道哪里来的... 会是这个原因么? <Permissions>����������</Permissions>
可是如果我把上面同样的代码存为本地文件,然后在asp中用同样的代码读取的话也是完全没有问题的啊... orz
看到网上有人说加一段代码 response.setContentType("text/xml;charset=utf-8");
可是我只是需要读返回的xml结点值,又不需要保存这个xml,这个ContentType我往哪写啊...囧
究竟是哪里出了问题啊... 查了一上午了也没搞定,求高人指点啊....... (┬_┬)