2

ユーザーがHTMLを入力し、Webサービスを介してそれが有効なHTMLであるかどうかを確認するWebサービスを構築しようとしています。

私の例(基本のみ)は次のとおりです。

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で)。現時点では、常にfalseを返しています。調査の結果、何らかの理由で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%確実ではありませんが、リクエスト ヘッダーで contenttype が "application/x-www-form-urlencoded"であることを指定しているため、HTMLEncode ではなく URLEncode を使用する必要がある可能性があります。したがって、次を使用してみてください。

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