我正在尝试将html文件读入我的.net应用程序(这是一个电子邮件模板)。问题是,当我读到它时,.net插入vbcrlf(我可以修复)并且还替换每个“with double”“这真的搞砸了html。
这是代码(简化以便于阅读)
Dim obj = WebRequest.Create("http://www.myurl.com/email/standard.htm").GetResponse()
Dim rdr As New StreamReader(obj.GetResponseStream())
Dim body As String = rdr.ReadToEnd
现在“body”有html但也有vbcrlf(无处不在)并添加了双引号。
vbCrLf & "<!DOCTYPE html>" & vbCrLf & vbCrLf & "<html lang=""en"">" & vbCrLf & "<head>" & vbCrLf & " <title>apptimi</title>" & vbCrLf & " "
知道为什么会这样吗? 谢谢
答案 0 :(得分:1)
尝试使用WebClient
获取HTML。
Dim html As String = New WebClient().DownloadString("http://www.myurl.com/email/standard.htm")
或者根据您要定位的框架替代
Dim html As String = Await New WebClient().DownloadStringTaskAsync("http://www.myurl.com/email/standard.htm")
你没有提到你想用它做什么,但是如果你想解析HTML那么我会看看HTMLAgilityPack ......
答案 1 :(得分:0)
如果您在“快速观察”中查看该内容,或者设置断点并将body
悬停在该值上,则会欺骗自己。 IDE正在这样做。 VbCrLf是IDE在HTML中的NewLines表示。加倍的双引号是IDE的指标......它们实际上并不存在。
控制台应用程序:
Sub Main()
Dim html As String = New Net.WebClient().DownloadString("http://www.myurl.com/email/standard.htm")
Console.WriteLine(html)
Console.Write("Done . . . ")
Console.ReadKey()
End Sub
将Quick Watch窗口中的IDE版本与控制台输出中显示的内容进行比较......后者是现实。
Mark Codexer的答案是正确的答案,而不是我的......他赢得了它。