将HTML分析为经典ASP的Web服务



我正在尝试构建用户进入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页面验证了输入,然后如果false为false(在字符串数组xml中)返回。目前,它总是返回错误。经过一些调查,似乎由于某种原因,ASMX收到的输入是空的,这与HTML标记有关 - 或者不是被ASMX脚本编码的HTML或未接受的HTML。它正在返回以下内容:

<?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服务或有任何建议?

不是100%确定的,但是由于您在请求标题中指定了contentType为" application/x-www-form-urlenceded"/em>可能是您需要使用urlencode而不是htmlencode。因此,尝试使用:

strEnvelope = "input=" & Server.URLEncode("<b>") 

最新更新