我正在尝试构建一个用户输入HTML的Web服务,然后通过Web服务验证它是否是有效的HTML。
我的例子(仅限基本版)是:
Set objXML = CreateObject("Msxml2.ServerXMLHTTP.6.0")
Dim strEnvelope
strEnvelope = "input=" & Server.HTMLEncode("<b>")
Call objXML.Open("POST", "http://[DOMAIN]/WebServices/HTMLWebService.asmx/ValidateHTML", false)
Call objXML.SetRequestHeader("Content-Type","application/x-www-form-urlencoded")
Call objXML.Send(strEnvelope)
Response.Write(strEnvelope & "##" & objXML.responseText & "##")
我的ASPX页面验证输入,然后如果为true则返回false(在字符串数组XML中)。目前,它总是返回假。 经过一些调查后,似乎由于某种原因,ASMX收到的输入是空的,而且与HTML标记有关 - 要么它不是HTML编码,要么不被asmx脚本接受。它返回以下内容:
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/">
<string />
<string>false</string>
</ArrayOfString>
&lt; string /&gt;是我将输入直接放回返回的xml字符串数组的地方。如果我硬编码“&lt; b&gt;”在此值中,xml将其返回为“&lt; b&gt;”这是我所期待的。
如果我只输入“b”,那么它返回false但在字符串数组的第一项中给我一个“b”的值 - 所以它肯定会拿起那个值。
有没有人在之前将HTML解析为ASP.NET(c#)Web服务或有任何建议?
答案 0 :(得分:0)
不是100%肯定,但由于您在请求标头中指定内容类型为 “application / x-www-form-urlencoded” ,因此可能是您需要使用URLEncode而不是HTMLEncode。 因此,请尝试使用:
strEnvelope = "input=" & Server.URLEncode("<b>")