我正在使用AngleSharp来打开"打开"在网址中,更改value
的{{1}}属性,然后提交input
。
但是当我从网址获取HTML代码时,我感到感兴趣的form
name
属性中的无法识别的字符。参见:
input
正如您所看到的,这是表格中唯一<!DOCTYPE html>
<html>
<head></head>
<body>
<hr>
<center>USER MENU<hr></center>
<form method="post" name="input" enctype="text/plain">
<fieldset>
<legend>ENTER USER CODE</legend>
ENTER USER CODE: <input type="password" name="�00" maxlength="4">
<br>
<button type="submit" formenctype="text/plain">SEND</button>
</fieldset>
</form>
</body>
</html>
所以我可以&#34;捕捉&#34;它(将input
)更改为其他属性作为选择器。像这样:value
[type=password]
所以,问题是当我提交表单时,它会发送错误名称的帖子数据,但无法识别。我通过在浏览器中打开此URL来了解无法识别的字符,并使用Wireshark仔细检查它(以获取char的HEX值)。
最后,char在浏览器源视图中是一个希腊语context.Active.QuerySelector(Of IHtmlInputElement)("[type=password]").SetAttribute("value", "1111")
,而Wireshark表示它是A
的符号C1
,其描述为:Á
(见http://www.ascii-code.com/)
我知道创建这个网络界面的人,他告诉我他错误地使用了希腊Latin capital letter A with acute
并且他无法改变它(我将解释原因)。
所以,既然我知道服务器的期望,我想我也可以设置A
属性,然后发送表单。但是当我这样做时,并没有得到认可,因为我在Wireshark中检查时,char与提交表单时浏览器发送的char不同。 (我努力设置正确的名字,没有运气)。
我还认为这可能是某种编码问题,但我没有设法在name
配置中设置编码。我将文化设定为&#34; el-GR&#34;在我获得HTML之前没有任何改变。
我该怎么办?你有什么建议吗?
PS。这是一个由微控制器托管的低安全性Web界面。由于设备已获得认证,因此无法更改HTML。此外,界面在浏览器中使用时效果非常好。
答案 0 :(得分:1)
我必须创建一个Implements
IEncodingProvider
接口的类,然后通过with方法向Configuration
构造函数提供此类的实例。
这是班级:
Private Class FixedEncodingProvider
Implements IEncodingProvider
Public Function Suggest(locale As String) As Encoding Implements IEncodingProvider.Suggest
Return Encoding.GetEncoding(1253)
End Function
End Class
然后像这样使用它:
Dim Config = Configuration.Default.WithDefaultLoader.With(New FixedEncodingProvider())
Dim context = BrowsingContext.[New](Config)
特别感谢图书馆创建者FlorianRappl的指导!