2

我正在尝试构建一个网络服务,用户在其中输入 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>

<string /> 是我将输入直接放回返回的 xml 字符串数组的地方。如果我将“<b>”硬编码到该值中,xml 会将其返回为“<b>”,这是我所期望的。

如果我只是输入“b”,那么它会返回 false,但在字符串数组的第一项中确实给了我一个“b”的值 - 所以它肯定会获取该值。

之前有没有人将 html 解析为 ASP.NET (c#) Web 服务或有任何建议?

4

1 回答 1

0

不是 100% 确定,但是由于您在请求标头中指定内容类型为 “application/x-www-form-urlencoded”,因此您可能需要使用 URLEncode 而不是 HTMLEncode。因此,尝试使用:

strEnvelope = "input=" & Server.URLEncode("<b>") 
于 2012-10-23T10:57:15.113 回答