簡體   English   中英

在C#中從httpwebrequest獲取垃圾內容

[英]Getting garbage content from httpwebrequest in c#

我正在嘗試使用HtmlAgilityPack讀取HttpWebRequest的響應內容,但是以某種方式顯示了垃圾或其他編碼字符,請幫助我如何讀取內容

我得到的內容是:

“ \\ u001f ‹\\ b \\ 0 \\ 0 \\ 0 \\ 0 \\ 0 \\ u0004 \\0í½\\ a \\ u001cI –%&/mÊ{\JõJ×àt¡\\ b€\\\\ u0013 $Ø\\ u0090 @ \\ u0010ìÁˆÍæ'ì \\ u001diG#)«* \ÊeVe] f \\ u0016 @Ìí\¼÷Þ{ï½÷Þ{ï½÷º; \\ u009dN'÷ßÿ?\\ fd \löÎJÚÉž!€ªÈ\\ u001f?〜| \\ u001f?\\“ 〜ãÇ¿ëÓ/OÞü> /OÓy»(Ó— = y〜v'〜´}÷îwï\Ü½ûôÍÓÓ÷þö› /ž§»ã\ôM\\ u009d-›¢-ªeVÞ½{úâ£ô£yÛ®\\ u001eݽ{uu5¾º7®ê‹»o ^Ý} \\ aX»xY \Ýn½7dzvöÑÑc|'¾[”Ëæ³\\ b”݇\\ u000f \ÊË\¡Ñ£2 [^ |öÑ·O?Jío\\ u0004 \\“ ÏfG\Ëbù6óò\\ u008f \Ù²8Ï›ö£t ^ççŸ} t×| 0þé¦Z〜”Þ=z¼ÈÛŒ† Ú®¶ó´..ûè¤Z¶ù²Ý〜s½Ê?J§ò×g \\ u001fµù» ö.º?L§ó¬nòö³u{¾}°\ÈsÂm\\ u009d]ø€\\bÑè+¿÷öWÇÛ'Õb•µÅ¤ôß8;ý,Ÿ]ä£é¼®\ùg»îýeF\\ u007f \\ u007f´ h²Õª,¦bµÜ¦χ \\ vïõeµÌ?¢7 \YšyU·Óu› \ÔÈÒæ<»Äßcú磣¥Ñ\öQ±Üï¾Û¦ \¨\\ u001dÁh¦u±jõ[&ÉOg-™|éÑèo| ×üWM^ƒ\\ u0010uU>É.ÒÏÒóõr \\ n $Ó;é/æÖÓª,sùì³t™_¥_N〜šþÞºsø\\ u001b·ó¢\g³\\ u0019}áÞ+ f£´ËÅyºå ^ \ϳæË«å˺Zåu{MÍîQK \\ u0014»J?2 \§Å ,ýÞGé'øùIúÑ÷Ó,kb™ë4\\ u007fW4m“ \ËAô?:ü\\ u008d \Éoì:ü^1û>!VáSF´Î \ÕeN\ù¸\\ 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我得到了上面的內容。

我遇到了同樣的問題,結果是響應被壓縮了。 您可以刪除

requestTransaction.Headers.Add("Accept-Encoding", "gzip, deflate, br");

對br不太確定,也可以添加

webRequest.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;

到您的HttpWebRequest,顧名思義,它將自動解壓縮響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM