我正在尝试构建一个网络服务,用户可以在其中输入 HTML,然后通过网络服务验证它是否是有效的 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 页面验证输入,然后返回是否为真或假(在字符串数组 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>
如果我只是输入“b”然后它返回 false 但确实在字符串数组的第一项中给我一个值“b” - 所以它肯定会拾取该值。
有没有人曾经将 html 解析为 ASP.NET (c#) web 服务或有任何建议?
最佳答案
不能 100% 确定,但由于您在请求 header 中指定内容类型为 "application/x-www-form-urlencoded",这可能是您需要使用 URLEncode 而不是 HTMLEncode。 因此,尝试使用:
strEnvelope = "input=" & Server.URLEncode("<b>")
关于c# - 从经典 ASP 将 HTML 解析为 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13013649/