【发布时间】:2018-06-21 05:06:05
【问题描述】:
我正在尝试使用HtmlAgilityPack 读取HttpWebRequest 的响应内容,但不知何故它显示垃圾或一些其他编码字符,请帮助我如何阅读内容
我得到的内容是:
"\u001f‹\b\0\0\0\0\0\u0004\0í½\a\u001cI–%&/mÊ{\u007fJõJ×àt¡\b€`\u0013$Ø\u0090@\ u0010ìÁˆÍæ'ì\u001diG#)«*\u0081ÊeVe]f\u0016@Ìí\u009d¼÷Þ{ï½÷Þ{ï½÷º;\u009dN'÷ßÿ?\fd\u0001löÎJÚÉž!€ªÈ\u001f?~|\u001f ?\"~ãÇ¿ëÓ/OÞü>/OÓy»(Ó—=y~v'~´}÷îwï\u009dܽûôÍÓô÷þö›/ž§»ã\u009dôM\u009d-›¢-ªeVÞ½{úâ £ô£yÛ®\u001eݽ{uu5¾º7®ê‹»o^Ý}\aX»xY\u007fÝn½7dzvöÑÑc|'¾[”Ëæ³\b”݇\u000f\u001fÊË\u001f¡Ñ£2[^|öÑ·O ?Jío\u0004\"ÏfG\u008fËbù6óò³\u008f\u0016Ù²8Ï›ö£t^ççŸ}t×|0þé¦Z~"Þ=z¼ÛŒ†Ú®¶ó´..?ûè¤Z¶ù²Ý~ s½Ê?J§ò×g\u001fµù»ö.º?L§ó¬nòö³u{¾}°\u0019ÈsÂm\u009d]ø€\bÑè+¿÷öWÇÛ'Õb•µÅ¤ôß8;ý,Ÿ]ä£é¼ ®\u0016ùg»îýeF\u007f\u007f´h²Õª,¦ôbµÜ¦×΋\vïõeµÌ?¢7\u001cYšyU·Óu›\u0016ÔÈÒæÉ.ÒÏÒóõr\n$Ó;é/æÖÓª,sùì³t™_¥_N~šþÞºsø\u001b·ó ¢\u0019g³\u0019}áÞ+f£´ÂËÅyºå^\u001eϳæË«å˺Zåu{MÍî QK\u0014»J?2\u001f§Å,ýÞGé'øùIúÑ÷Ó¬,kb™ë4\u007fW4m“\u0016ËAô?:ü\ u008d\u007fÉoì:ü^1û>!VáSF´Î\u0017ÕeN\u001fù¸\u0002\a
我的代码
HttpWebRequest requestTransaction;
Uri uriTransact = new Uri(Url);
requestTransaction = (HttpWebRequest)WebRequest.Create(uriTransact);
requestTransaction.ContentType = "application/x-www-form-urlencoded";
requestTransaction.Method = "Post";
requestTransaction.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8";
requestTransaction.KeepAlive = true;
requestTransaction.Headers.Add("Cache-Control", "no-cache");
requestTransaction.CookieContainer = cookies;
requestTransaction.Headers.Add("Upgrade-Insecure-Requests", "1");
requestTransaction.Headers.Add("Accept-Encoding", "gzip, deflate, br");
requestTransaction.Headers.Add("Accept-Language", "en-US,en;q=0.9");
requestTransaction.Host = host;
requestTransaction.Headers.Add("Origin", requestOrigin);
requestTransaction.Referer = requestReferer
requestTransaction.UserAgent = "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36";
byte[] sentData2 = Encoding.UTF8.GetBytes(postData2);
requestTransaction.ContentLength = sentData2.Length;
using (System.IO.Stream sendStream = requestTransaction.GetRequestStream())
{
sendStream.Write(sentData2, 0, sentData2.Length);
sendStream.Close();
}
using (var response = requestTransaction.GetResponse() as HttpWebResponse)
{
var doc = new HtmlAgilityPack.HtmlDocument();
doc.Load(response.GetResponseStream());
}
在检查doc.DocumentNode.InnerHtml之后,我得到了上述内容。
【问题讨论】:
-
你确定
Encoding.UTF8是正确的编码吗? -
是的,因为我正在使用另外 3 个 API,并且正在使用相同的代码。
-
这个符号
\u001f是UTF-16 -
那么,我如何从中获取所需的 html 内容?
-
按照我们的建议使用
UTF16 encoding。
标签: c# .net httpwebrequest html-agility-pack