【问题标题】:Decode response from the server which based on (HttpWebResponse)基于 (HttpWebResponse) 的来自服务器的解码响应
【发布时间】:2018-09-16 14:00:09
【问题描述】:

我在使用HttpWebrequest 解码答案时遇到了一些问题。当我在服务器中进行身份验证时,我想获取页面的 html 代码。但是得到:

‹?????YлrЫЖ~h“Ж@D‚¤-ЫAKkQ¶2–м±h;©ДhVА‚ШPм‚”МСLях:У·hчOЯ&УѕFПо .”(хLн№|зІзњ] ы[o_N~ z761‡ыщ/%ЮpNІHєфП[ф2ЋЌDwr“Pdёz…‘ Чў'7 )§gВпоў^‘9Е(Ґ‘GSљV—фтЉ‰R®jкЗо‡Qчe&lt;O€—aХЪСSoFиF—IњЉЉ‹$мr—„м~'г4UKђ8Љ~њО‰иzTPW°8Є…Т$€#©ХЎsВBщсRКyHtN»nЖХhїйчww]WК†,є2R‚“®ґ¤Фыd!—6ь C@ЋЃ='3Ъ»о*1PL„tш‰u™с‰^§4]Рtї§йWѓqqRЫеiCjНJUѕ№›ІD<uЃЈю¶б…QµџїђС4Ьпйїкz—ЏwЈЯ¤u‡њџE*Э†ЬГГ,OЭ”ТИф¬Х‚¤ЕћнЕn6‡$ЋC*уMj§P*”©Б•†µЪ@4-з–†њJgОЯoТЪ@nиЕџ+§kЕ фє¦®сЌКw°¤юm™—D. лiП¦Ч¬E“RuГѓЗ-щ&Ў~Щ°”ЪдєћЋj“кfN=\Ж[Ўў‡П”кЎ-, йьЪсј,¬•_'рF зцNZъ1<–Мgрр™Б#Ње/сж,‚g–фІd–ЏВb–1х$ љ:лjХГо"Њ‰gІўЃ•±36uаlpгшЉQIк°Ћ1иГ?ЛщЦD…ІџВE–-§ЭF¶<Zђі®@№€ИВФр>†ЬyJJ тйoa„4/d0KЂtz'±G№УЮ”2М'ґVрc3Aзаён†„у5НQћ1† Жих[0c9ҐBRS аж,"ТeJ"мІ(ўйлЙс|'‡ѕќXаBи©@ЄА—LёБG... Yп‡|Z–сbГ(ё{­IZp*IњQ±” aK)^j?1OЦ*Ї–З№5КNПA›Г2БаQєЏ°s›Л†џAЫПЧ”Н±СQНєї§ Ё{I—ѕ>лч+О’LДp%џi^њБз8w?язжћЋ«0o}MрOBrѓуў>ЇЊйC...9*"0-v ,MЕБІёvмыРќЪTwРW\е&РJФэ1,¦°І)&pЏ;€б*™H{-еЧыЦ':z'ьўД•?kD;ХBQkђGr'чќ_±ј …ЛУОГ»]т#йЌoWьсеХ}µЄМ[(ЏҐPF7a5[Ї¬нЃе\LL$eQ‡кµОD7рЇ{|ЬхjuUВг©UЁїЋі”йЙґ і(TТvJZ?9{:­&Xeж+YмT_WR\ж]ѕ•G№wаМЙЅИЯЇBИ9j'AЃѕ{{:Ѓ‡А!К»юц6пш8'WA\ZЙ'Ґ,DЬљІйG ЅЪ]т№UHЌ.Еуѕј{В)ЋВ,QЙ*ї:ШZЁќЦњS.Д›O",гв$'ођіёy©щRМaЊ†Љk'Ћў; -МахЎq0J_Кі±zq*mе”{Ј№x-и¬Ъ{ъ#РeмЭч=¶0‡+зѕЎ.ј Mб•?tхEµ>U‹ЃЭмЃЖ,…!ЛГ}'»XШ[Џd`КЏ\Ў' р рАХ0µOjЪA°ГтхDіЂvIТ®·Еч-‚а¤Ђ¬ЙE-куqуqСЅїЗЧ'mЬ'hx2ћGЈWГЬicо@!|џLЊ7oъґ ъ GЗG'|Ц|††ЮЅz?:?тyт9lТСџFп†ёЫFЬ...Ё]К№с.f‘hБцІpc;ЙуІЮO№%АgкUІх›юЅјA\КЇБ еИИу•'ёЊSмхеDQЧ‹jЂеЧ!9µеr иГLэїЉбя?бДЩЕъ??

请帮我解决我的问题

           public static void RequestMutualAuths()
        {
            string logon = "admin";
            string password = "admin";
            string url = "http://192.168.1.55/";
            WebRequest request = WebRequest.Create(url);
            request.Method = WebRequestMethods.Http.Get;
            request.ContentType = "application/x-www-form-urlencoded";
            request.Headers.Add("Accept-Language", "en-US");
            request.Headers.Add("Accept-Encoding", "gzip, deflate");
            string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(logon + ":" + password));
            request.Headers[HttpRequestHeader.Authorization] = string.Format("Basic {0}", credentials);
            request.PreAuthenticate = true;
            using (WebResponse response = request.GetResponse())
            {
                response.Headers.Add("Content-type", "text/plain");
                Console.WriteLine(((HttpWebResponse)response).StatusDescription);
                using (Stream dataStream = response.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(dataStream, Encoding.GetEncoding("windows-1251")))
                    {
                        string responseFromServer = reader.ReadToEnd();

                        Console.WriteLine(responseFromServer);
                    }
                }
            }
        }

【问题讨论】:

  • 读取数据时为什么要指定windows-1251编码?
  • 我尝试了“utf-8”字符集,但它也不起作用。我有类似的回答。
  • request.Headers.Add("Accept-Encoding", "gzip, deflate"); 它是否被压缩了?如果是,请参阅this
  • 如果我删除这个选项,我会得到一个一个结果
  • @Serhii 你是什么意思?

标签: c# webrequest httpwebresponse


【解决方案1】:
class IrequesttoKness
{
    public static void LoadHttpPageWithBasicAuthentication(string login, string password, RestClient url)
    {
        var client = url;
        var request = new RestRequest(Method.GET);
        request.AddHeader("Cache-Control", "no-cache");
        string credentials = Convert.ToBase64String(Encoding.ASCII.GetBytes(login + ":" + password));
        request.AddHeader("Authorization", "Basic" + credentials);
        IRestResponse response = client.Execute(request);
        var html = response.Content;
        Console.WriteLine(html);
    }
}

【讨论】:

    猜你喜欢
    • 2017-12-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-05
    • 1970-01-01
    • 1970-01-01
    • 2011-01-26
    • 2018-02-26
    • 1970-01-01
    相关资源
    最近更新 更多