我正在阅读来自经典asp。
的webservice输出Web服务输出如下。
<boolean xmlns="http://somewebsite.com/">true</boolean>
这是正常的输出。
我在下面编写代码来阅读经典asp。
中的这个输出Set obj1 = Server.createobject("MSXML2.ServerXMLHTTP.3.0")
URL1 = "http://webserive.asmx/method?para=2"
obj1.open "GET", URL1, False
obj1.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=utf-8"
obj1.setRequestHeader "SOAPAction", URL1
obj1.send
if obj1.responseText <> "" Then
response.write "ok." & obj1.responseText
end if
但是此输出打印以下输出:
“ok.true”
输出中有一个空间是不可预期的。
这就是问题所在。
请建议。
答案 0 :(得分:1)
ResponseText
的所有强烈目的的输出是有效的HTML结构,就互联网浏览器而言,并会相应地对待它。当您使用Response.Write()
向浏览器发送内容时,它会“按原样”发送,因此在这种情况下,<boolean>
元素被视为HTML,因此仅输出包含的文本true
。< / p>
要解决此问题,首先需要对ResponseText
进行HTML编码,然后再将其发送到浏览器,以便浏览器知道将发送的内容视为普通旧文本。您可以通过调用方法Server.HTMLEncode()
Response.Write "ok." & Server.HTMLEncode(obj1.ResponseText)
根据MSDN;
HTMLEncode方法将HTML编码应用于指定的字符串。在Web应用程序中使用表单数据和其他客户端请求数据之前,这非常有用。编码数据会将可能不安全的字符转换为HTML编码的等效字符 如果要编码的字符串不是双字节字符集(DBCS),则HTMLEncode按如下方式转换字符:
- 小于号的字符(
<
)将转换为<
。- 大于号的字符(
>
)将转换为>
。- &符号(
&
)将转换为&
。- 双引号字符(
"
)将转换为"
。- 任何代码大于或等于
0x80
的ASCII代码字符都会转换为&#<number>
,其中<number>
是ASCII字符值。如果要编码的字符串是DBCS,则HTMLEncode按如下方式转换字符:
- 转换所有扩展字符。
- 任何代码大于或等于
0x80
的ASCII代码字符都会转换为&#<number>
,其中<number>
是ASCII字符值。- 日语代码页中的半角片假名字符未被转换。
发送ResponseText
时发生这种情况;
responseText的
<boolean xmlns="http://somewebsite.com/">true</boolean>
客户端输出
ok.true
如果你使用Server.HTMLEncode()
,那将是;
ResponseText (HTML编码)
<boolean xmlns="e;http://somewebsite.com/"e;>true</boolean>
客户端输出
ok.<boolean xmlns="http://somewebsite.com/">true</boolean>
答案 1 :(得分:0)
所以我想我可能会错过了解你的需求。如果要解析XML以将其删除,则只删除;
的内容<boolean xmlns="http://somewebsite.com/">true</boolean>
在这种情况下,返回到浏览器true
,然后您需要使用类似XPath的内容来解析XML以获取基础值。
'After the initial Send()
Dim xml, root
If obj1.Status = 200 Then
Set xml = obj1.ResponseXML
Call xml.SetProperty("SelectionLanguage", "XPath")
Set root = xml.DocumentElement
Call Response.Write(root.SelectSingleNode("boolean").Text)
End If