HttpWebRequest мазмұн ұзындығы қатесі

HttpWebResponse файлын жүктеген кезде, сервермен жіберілген мазмұн ұзындығы дұрыс емес және HttpWebResponse файлын орташа жолды жүктеуді тоқтатуға әкеледі. IE, шолу кезінде бұл мәселе жоқ сияқты. HttpWebResponse-ні қалай жіберуге болатындығын немесе тіпті мағынасын білдіретін мазмұнды ескермеу үшін қандай да бір идея. Берілген кез келген көмегіміз өте жоғары бағаланатын еді.

- Мысал

class Program
{
    static void Main(string[] args)
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://localhost:59771/Default.aspx");
        HttpWebResponse response = (HttpWebResponse)request.GetResponse();

        Console.WriteLine("Content length: " + response.ContentLength);

        int bytesRead = 0;
        long totalBytesRead = 0;

        byte[] data = new byte[1024 * 64];
        StringBuilder output = new StringBuilder();

        Stream responseStream = response.GetResponseStream();

        do
        {
            bytesRead = responseStream.Read(data, 0, 1024 * 64);
            totalBytesRead += bytesRead;

            output.Append(Encoding.ASCII.GetString(data, 0, bytesRead));
        }
        while (bytesRead > 0);

        Console.WriteLine("total read: " + totalBytesRead);
        Console.WriteLine("last content read: " + output.ToString());
    }

    protected void Page_Load(object sender, EventArgs e)
    {
       Response.Clear();
       Response.ClearHeaders();
       Response.AddHeader("Content-Length", "13");
       Response.Write("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
    }
}

Мәселе шешілді!

Деректерді төмен қарай тартатын сервер Cognos сервері болып табылады және ол жолдың қысылған болуы секілді мазмұн ұзындығын есептеп тұрды, бірақ біз кодты қысуды қабылдай алатын күйге жібермедік, осылайша ол кері сығылмайды деректер, бірақ қысу ұзындығына ғана. IE бұл мәселе жоқ, өйткені ол қысуды қабылдай алады деп мәлімдеді. Шығарылымды түзету коды:

request2.Headers.Add("Accept-Encoding", "gzip,deflate");
3
Сіз өзіңізді көру үшін баратын URL мекенжайыңыз бар ма? Кодты бізбен бөлісуді күтіңіз?
қосылды автор Jon Skeet, көзі

2 жауаптар

Мәселе шешілді!

Деректерді төмен қарай тартатын сервер Cognos сервері болып табылады және ол жолдың қысылған болуы секілді мазмұн ұзындығын есептеп тұрды, бірақ біз кодты қысуды қабылдай алатын күйге жібермедік, осылайша ол кері сығылмайды деректер, бірақ қысу ұзындығына ғана. IE бұл мәселе жоқ, өйткені ол қысуды қабылдай алады деп мәлімдеді. Шығарылымды түзету коды:

 request2.Headers.Add("Accept-Encoding", "gzip,deflate"); 
3
қосылды

HttpWebRequest серверден жіберілген деректермен ешқандай байланысы жоқ, тек сіз жіберген деректермен қоса, HttpWebResponse дегенді білдіреді деп ойлаймын.

HttpWebResponse мүлде сервермен жіберілген Content-Length туралы қамқорлық жасамайды, ол ақпаратты тек қана клиент үшін тақырыптарда қамтамасыз етеді.

Жауап беру ағынынан оқу кезінде сервердің мазмұн ұзақтығына сенім артуға болмайды, тек Stream.Read әдісі 0 мәнін қайтарғанға дейін оқуды жалғастырыңыз.

0
қосылды
Connection: Keep Alive Stream.Read деп ойламаймын.
қосылды автор L.B, көзі