Anatoly Lubarsky Logo
programming, design, integration, games, music

.NET: How to Make HTTP Request and Get Response

There are so many ways to query external url in .NET, people can use so many approaches and .NET Framework classes available - it's crazy. Quering external urls via HTTP today is a common task many developers facing.


There are many REST (or other types of) open APIs created by external services.


Below I decided to post an example of how to do it the right way (as far as I can see it). This schematic function supports both POST and GET requests, highly scalable and the most important - it is designed as low level infrastructure function (i.e. uses simple types and bubbles exceptions).


public string GetHttpResponse(string requestUrl, byte[] data)
{
    // declare objects
    string responseData = String.Empty;
    HttpWebRequest req = null;
    HttpWebResponse resp = null;
    StreamReader strmReader = null;

    try
    {
        req = (HttpWebRequest)HttpWebRequest.Create(requestUrl);
        

        // set HttpWebRequest properties here (Method, ContentType, etc)
        // some code

        // in case of POST you need to post data
        if ((data != null) && (data.Length > 0))
        {
            using (Stream strm = req.GetRequestStream())
            {
                strm.Write(data, 0, data.Length);
            }
        }

        resp = (HttpWebResponse)req.GetResponse();
        strmReader = new StreamReader(resp.GetResponseStream());
        responseData = strmReader.ReadToEnd().Trim();
    }
    catch (Exception ex)
    {
        throw;
    }
    finally
    {
        if (req != null)
        {
            req = null;
        }

        if (resp != null)
        {
            resp.Close();
            resp = null;
        }
    }

    return responseData;
}

P.S. - HttpWebRequest proved to be the most reliable for me.


Enjoy


Related Posts:

Friday, August 29, 2008 12:34 AM

Login

Subscribe via RSS

Article Categories

.Net Framework
ASP.NET Tips
C# Win32 API
HTML, CSS, Web
Javascript Tips
MSSQL Tips
System
System.Net
WebServices

Archives

(02) January, 2018
(01) June, 2013
(03) March, 2013
(02) February, 2013
(01) July, 2012
(01) April, 2012
(01) September, 2011
(01) August, 2011
(03) May, 2011
(01) December, 2010
(01) November, 2010
(01) October, 2010
(01) June, 2010
(01) May, 2010
(02) March, 2010
(01) January, 2010
(02) December, 2009
(03) September, 2009
(03) August, 2009
(09) July, 2009
(04) June, 2009
(03) May, 2009
(02) April, 2009
(03) March, 2009
(02) February, 2009
(02) January, 2009
(04) December, 2008
(04) November, 2008
(05) October, 2008
(04) September, 2008
(05) August, 2008
(04) July, 2008
(05) June, 2008
(07) May, 2008
(04) April, 2008
(03) March, 2008
(02) February, 2008
(03) January, 2008
(03) December, 2007
(05) November, 2007
(04) October, 2007
(05) September, 2007
(12) August, 2007
(11) July, 2007
(14) June, 2007
(13) May, 2007
(13) April, 2007
(10) March, 2007
(11) February, 2007
(14) January, 2007
(14) December, 2006
(12) November, 2006
(08) October, 2006
(09) September, 2006
(06) August, 2006
(08) July, 2006
(10) June, 2006
(09) May, 2006
(22) April, 2006
(25) March, 2006
(12) February, 2006
(14) January, 2006
(19) December, 2005
(17) November, 2005
(16) October, 2005
(16) September, 2005
(12) August, 2005
(14) July, 2005
(09) June, 2005
(12) May, 2005
(12) April, 2005
(20) March, 2005
(11) February, 2005
(12) January, 2005
(18) December, 2004
(13) November, 2004
(12) October, 2004
(14) September, 2004
(09) August, 2004
(23) July, 2004
(19) June, 2004
(29) May, 2004
(19) April, 2004
(16) March, 2004
(09) February, 2004
(06) January, 2004
(02) December, 2003
(01) November, 2003

Post Categories

.Net and C#
Android
Antispam
App. Development
Architecture
ASP.NET
Blogging
Deprecated Projects
Facebook Platform
Fun
Google
iOS
Javascript
Misc.
MSSQL
Music
My Games
Performance
Roller
Social Networks
Tools
Visual Studio
Web 2.0
WebServices

About Me

linkedin Profile
Recs
Who am I

My Sites

Billy Beet
x2line blogs