httpWebRequest issue

csharp , java France
  • 9 years ago
    Hello,

    I hope somebody has a good explanation for this issue.

    Okay I'm having troubles with the httpWebRequest method. I need to download reports from a specified server (can't give these details). Now I don't have trouble with an "HTTPS" url but I with an "HTTP" url I get the error :

    error: The server committed a protocol violation. Section=ResponseHeader Detail=Header name is invalid

    This the first time I got this error in c#.net. I tried this in Java and there I didn't had any problems. So I'm kind of lost.

    I search the internet to see what the "ProtocolViolationException" throws. I found this on the msdn site:

    ProtocolViolationException :
    Method is GET or HEAD, and either ContentLength is greater or equal to zero or SendChunked is true.
    -or-
    KeepAlive is true, AllowWriteStreamBuffering is false, ContentLength is -1, SendChunked is false, and Method is POST or PUT.

    I did an output of these properties and some how these don't have the values mention to trigger the ProtocolViolationException.

    So my question is, How is this possible?

    this is my testClass:

    using System;
    using System.Collections.Generic;
    using System.Text;
    using System.IO;
    using System.Net;

    namespace adlogix_views
    {
        static class httpTestClass
        {
            /// <summary>
            /// The main entry point for the application.
            /// </summary>
            [STAThread]
            static void Main()
            {
              
                string page = "";
                try
                {               
                    // write a line of text to the file
                    HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("http://www.mywebsite.com");

                    string userPass = "myUsername:myPassword";
                    string encoding = Convert.ToBase64String(Encoding.ASCII.GetBytes(userPass));

                    wr.Headers.Add("Authorization", "Basic " + encoding);
                    wr.PreAuthenticate = true;

                    Console.WriteLine("Method = " + wr.Method);
                    Console.WriteLine("ContentLength = " + wr.ContentLength);
                    Console.WriteLine("SendChunked = " + wr.SendChunked);
                    Console.WriteLine("KeepAlive = " + wr.KeepAlive);
                    Console.WriteLine("AllowWriteStreamBuffering = " + wr.AllowWriteStreamBuffering);

                    HttpWebResponse ws = (HttpWebResponse)wr.GetResponse();
                    Stream str = ws.GetResponseStream();
                    StreamReader sr = new StreamReader(str);
                    while ((page = sr.ReadLine()) != null)
                    {
                        Console.WriteLine(page);
                    }


                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }
        }
    }


    this is the output of the properties

    output: Method = GET
            ContentLength = -1
            SendChunked = False
            KeepAlive = True
            AllowWriteStreamBuffering = True


    I hope somebody can help me with this.
  • 9 years ago

    hi gerbrandc ,
    I am using the following code, and trust me it never shows any of the Exception.
     Try the following code,

    try
    {
               
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.mywebsite.com");
                
    HttpWebResponse res = (HttpWebResponse)req.GetResponse();
               
    Stream st = res.GetResponseStream();
               
    StreamReader read = new StreamReader(st);
                Console.WriteLine(read.ReadToEnd());
    }
    catch (Exception m)
    {          
     
             Console.WriteLine(m.Message);
    }

    Hope this will help you.
    Thanks & Regards
    Dilipv

Post a reply

Enter your message below

Sign in or Join us (it's free).

Contribute

Why not write for us? Or you could submit an event or a user group in your area. Alternatively just tell us what you think!

Our tools

We've got automatic conversion tools to convert C# to VB.NET, VB.NET to C#. Also you can compress javascript and compress css and generate sql connection strings.

“C++: an octopus made by nailing extra legs onto a dog.” - Steve Taylor