HttpStatusCode Enumerations...

Discussion in 'ASP .Net' started by clintonG, May 5, 2004.

  1. clintonG

    clintonG Guest

    The StatusCode is returned as an HttpWebResponse Member Name
    such as OK, Moved, NotFound and so on.

    Does anybody know how to get an actual HTTP return code?

    --
    <%= Clinton Gallagher
    A/E/C Consulting, Web Design, e-Commerce Software Development
    Wauwatosa, Milwaukee County, Wisconsin USA
    NET
    URL http://www.metromilwaukee.com/clintongallagher/
     
    clintonG, May 5, 2004
    #1
    1. Advertising

  2. "clintonG" <csgallagher@> wrote in
    news::

    > The StatusCode is returned as an HttpWebResponse Member Name
    > such as OK, Moved, NotFound and so on.
    >
    > Does anybody know how to get an actual HTTP return code?


    From the help entry for HttpStatusCode:

    "The HttpStatusCode enumeration contains the values of the status
    codes defined in RFC 2616 for HTTP 1.1."

    HttpStatusCode is an enumeration, so it's already a number. An
    enumeration's default numeric type is Int32 (int in C#). Try:

    using System;
    using System.Net;

    namespace ExampleNamespace
    {
    public class ExampleClass
    {
    [STAThread]
    public static void Main()
    {
    HttpWebRequest httpReq =
    (HttpWebRequest) WebRequest.Create("http://www.yahoo.com");
    httpReq.AllowAutoRedirect = false;

    HttpWebResponse httpRes =
    (HttpWebResponse) httpReq.GetResponse();

    Console.WriteLine("httpRes.StatusCode name = {0}",
    httpRes.StatusCode) ;
    Console.WriteLine("httpRes.StatusCode value = {0}",
    (int) httpRes.StatusCode) ;

    // Close the response.
    httpRes.Close();
    }
    }
    }


    Hope this helps.

    Chris.
    -------------
    C.R. Timmons Consulting, Inc.
    http://www.crtimmonsinc.com/
     
    Chris R. Timmons, May 5, 2004
    #2
    1. Advertising

  3. clintonG

    clintonG Guest

    Thanks for the copy and pasted code Chris. ;-) I used a similar snippet
    and read the same statement regarding the enumeration...

    Using the remote MSDN copy of what we have locally...
    http://msdn.microsoft.com/library/d...ml/frlrfsystemnethttpstatuscodeclasstopic.asp


    To make the long story short I was not casting the StatusCode
    property to an int. How would I know? Am I to understand that
    all enums return an integer type?

    Here's my (curious) code that now returns desired results...

    HttpWebRequest httpReq =
    (HttpWebRequest)WebRequest.Create("http://metromilwaukee.com");
    httpReq.AllowAutoRedirect = false;

    HttpWebResponse httpRes = (HttpWebResponse)httpReq.GetResponse();

    lblResponseValue.Text = "<b>Member Name: </b>"
    + httpRes.StatusCode + "<br
    />"
    + "<b>Status Code: </b>"
    + (int) httpRes.StatusCode
    +"<br />"
    + "<b>Last Modified: </b>"
    + httpRes.LastModified;

    // Note the curiosity regarding no requirement to use the ToString( )
    method
    nor cast the same property to an int unless I would have somehow known
    to
    do so. These circumstantial uses of type are keeping me confused.

    <%= Clinton Gallagher








    "Chris R. Timmons" <crtimmons@X_NOSPAM_Xcrtimmonsinc.com> wrote in
    message news:Xns94E0ABC537E96crtimmonscrtimmonsin@207.46.248.16...
    > "clintonG" <csgallagher@> wrote in
    > news::
    >
    > > The StatusCode is returned as an HttpWebResponse Member Name
    > > such as OK, Moved, NotFound and so on.
    > >
    > > Does anybody know how to get an actual HTTP return code?

    >
    > From the help entry for HttpStatusCode:
    >
    > "The HttpStatusCode enumeration contains the values of the status
    > codes defined in RFC 2616 for HTTP 1.1."
    >
    > HttpStatusCode is an enumeration, so it's already a number. An
    > enumeration's default numeric type is Int32 (int in C#). Try:
    >
    > using System;
    > using System.Net;
    >
    > namespace ExampleNamespace
    > {
    > public class ExampleClass
    > {
    > [STAThread]
    > public static void Main()
    > {
    > HttpWebRequest httpReq =
    > (HttpWebRequest) WebRequest.Create("http://www.yahoo.com");
    > httpReq.AllowAutoRedirect = false;
    >
    > HttpWebResponse httpRes =
    > (HttpWebResponse) httpReq.GetResponse();
    >
    > Console.WriteLine("httpRes.StatusCode name = {0}",
    > httpRes.StatusCode) ;
    > Console.WriteLine("httpRes.StatusCode value = {0}",
    > (int) httpRes.StatusCode) ;
    >
    > // Close the response.
    > httpRes.Close();
    > }
    > }
    > }
    >
    >
    > Hope this helps.
    >
    > Chris.
    > -------------
    > C.R. Timmons Consulting, Inc.
    > http://www.crtimmonsinc.com/
     
    clintonG, May 6, 2004
    #3
  4. "clintonG" <csgallagher@> wrote
    in news::

    > Thanks for the copy and pasted code Chris. ;-) I used a similar
    > snippet and read the same statement regarding the enumeration...
    >
    > Using the remote MSDN copy of what we have locally...
    > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/
    > cpref/html/frlrfsystemnethttpstatuscodeclasstopic.asp
    >
    > To make the long story short I was not casting the StatusCode
    > property to an int. How would I know? Am I to understand that
    > all enums return an integer type?


    Clinton,

    Int32 is the default type for enums. You can specify any other
    integral type (except System.Char) as the type for an enum.

    Enums can be a little confusing. A fair amount of casting has to be
    used when accessing an enum value. There's also one way to create an
    enum, and another way to access its properties and methods.

    Creating an enum is done via the enum keyword:

    // Using the default System.Int32 (C# "int) type:
    public enum Enum1 { Value1 = 1, Value2 = 2 }

    // Using the System.Byte (C# "byte") type:
    public enum Enum2 : byte { Value1 = 128, Value2 = 138 }

    Enum instances can be accessed using the methods and
    properties defined in the System.Enum class. The help entries for
    this class have several examples.


    > // Note the curiosity regarding no requirement to use the
    > ToString( ) method
    > nor cast the same property to an int unless I would have somehow
    > known to
    > do so. These circumstantial uses of type are keeping me
    > confused.


    The C# Language Reference, while dry at times, is invaluable in
    learning all of the nuances and quirks of C#. Section 7.7.4 covers
    the addition operator (+). For string addition where only one of the
    operands is a string, the compiler will call the .ToString() method
    of the non-string operand. You can see this in action by overriding
    the .ToString() method of a simple class:


    using System;

    namespace ExampleNamespace
    {
    public class ToStringClass
    {
    // By default, ToString() returns the fully
    // qualified name of its type. Comment out this
    // ToString() method to see what would otherwise be printed
    // by the code in the Main() method...

    public override string ToString()
    {
    return "42";
    }
    }

    public class ExampleClass
    {
    [STAThread]
    public static void Main()
    {
    ToStringClass tsc = new ToStringClass();

    string msg =
    "The answer to life, the universe and " +
    "everything is " + tsc;

    Console.WriteLine(msg) ;
    }
    }
    }


    Hope this helps.

    Chris.
    -------------
    C.R. Timmons Consulting, Inc.
    http://www.crtimmonsinc.com/
     
    Chris R. Timmons, May 6, 2004
    #4
  5. clintonG

    clintonG Guest

    "Chris R. Timmons" <crtimmons@X_NOSPAM_Xcrtimmonsinc.com> wrote in
    message news:Xns94E0F0F1BD4DEcrtimmonscrtimmonsin@207.46.248.16...
    > "clintonG" <csgallagher@> wrote
    > in news::
    >
    > > Thanks for the copy and pasted code Chris. ;-) I used a similar
    > > snippet and read the same statement regarding the enumeration...
    > >
    > > Using the remote MSDN copy of what we have locally...
    > > http://msdn.microsoft.com/library/default.asp?url=/library/en-us/
    > > cpref/html/frlrfsystemnethttpstatuscodeclasstopic.asp
    > >
    > > To make the long story short I was not casting the StatusCode
    > > property to an int. How would I know? Am I to understand that
    > > all enums return an integer type?

    >
    > Clinton,
    >
    > Int32 is the default type for enums. You can specify any other
    > integral type (except System.Char) as the type for an enum.
    >
    > Enums can be a little confusing. A fair amount of casting has to be
    > used when accessing an enum value. There's also one way to create an
    > enum, and another way to access its properties and methods.
    >
    > Creating an enum is done via the enum keyword:
    >
    > // Using the default System.Int32 (C# "int) type:
    > public enum Enum1 { Value1 = 1, Value2 = 2 }
    >
    > // Using the System.Byte (C# "byte") type:
    > public enum Enum2 : byte { Value1 = 128, Value2 = 138 }
    >
    > Enum instances can be accessed using the methods and
    > properties defined in the System.Enum class. The help entries for
    > this class have several examples.
    >
    >
    > > // Note the curiosity regarding no requirement to use the
    > > ToString( ) method
    > > nor cast the same property to an int unless I would have somehow
    > > known to
    > > do so. These circumstantial uses of type are keeping me
    > > confused.

    >
    > The C# Language Reference, while dry at times, is invaluable in
    > learning all of the nuances and quirks of C#. Section 7.7.4 covers
    > the addition operator (+). For string addition where only one of the


    > operands is a string, the compiler will call the .ToString() method
    > of the non-string operand. You can see this in action by overriding
    > the .ToString() method of a simple class:
    >
    >
    > using System;
    >
    > namespace ExampleNamespace
    > {
    > public class ToStringClass
    > {
    > // By default, ToString() returns the fully
    > // qualified name of its type. Comment out this
    > // ToString() method to see what would otherwise be printed
    > // by the code in the Main() method...
    >
    > public override string ToString()
    > {
    > return "42";
    > }
    > }
    >
    > public class ExampleClass
    > {
    > [STAThread]
    > public static void Main()
    > {
    > ToStringClass tsc = new ToStringClass();
    >
    > string msg =
    > "The answer to life, the universe and " +
    > "everything is " + tsc;
    >
    > Console.WriteLine(msg) ;
    > }
    > }
    > }
    >
    >
    > Hope this helps.
    >
    > Chris.
    > -------------
    > C.R. Timmons Consulting, Inc.
    > http://www.crtimmonsinc.com/


    Thanks so much for the lucid explanations Chris. I will be making an
    effort to make a thorough study of enums as well as study of the
    C# language reference with regard to its type casting behaviors.

    <%= Clinton
     
    clintonG, May 6, 2004
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. exquisitus
    Replies:
    12
    Views:
    22,565
    Tilman Bohn
    Feb 19, 2005
  2. exquisitus
    Replies:
    2
    Views:
    460
    Tor Iver Wilhelmsen
    Apr 24, 2005
  3. Chanchal
    Replies:
    4
    Views:
    409
    Thomas Hawtin
    Nov 29, 2005
  4. Joyce
    Replies:
    1
    Views:
    2,141
    Stan Kitsis [MSFT]
    Feb 18, 2005
  5. Flip Rayner
    Replies:
    1
    Views:
    683
    bruce barker
    Jan 23, 2007
Loading...

Share This Page