Create Method (String)
.NET Framework Class Library
WebRequest..::.Create Method (String)

Initializes a new WebRequest instance for the specified URI scheme.

Namespace:  System.Net
Assembly:  System (in System.dll)
Visual Basic (Declaration)
Public Shared Function Create ( _
    requestUriString As String _
) As WebRequest
Visual Basic (Usage)
Dim requestUriString As String
Dim returnValue As WebRequest

returnValue = WebRequest.Create(requestUriString)
C#
public static WebRequest Create(
    string requestUriString
)
Visual C++
public:
static WebRequest^ Create(
    String^ requestUriString
)
JScript
public static function Create(
    requestUriString : String
) : WebRequest

Parameters

requestUriString
Type: System..::.String
The URI that identifies the Internet resource.

Return Value

Type: System.Net..::.WebRequest
A WebRequest descendant for the specific URI scheme.
ExceptionCondition
NotSupportedException

The request scheme specified in requestUriString has not been registered.

ArgumentNullException

requestUriString is nullNothingnullptra null reference (Nothing in Visual Basic).

SecurityException

The caller does not have permission to connect to the requested URI or a URI that the request is redirected to.

UriFormatException

The URI specified in requestUriString is not a valid URI.

The Create method returns a descendant of the WebRequest class determined at run time as the closest registered match for requestUri.

For example, when a URI beginning with http:// is passed in requestUri, an HttpWebRequest is returned by Create. If a URI beginning with file:// is passed instead, the Create method will return a FileWebRequest instance.

The .NET Framework includes support for the http://, https://, and file:// URI schemes. Custom WebRequest descendants to handle other requests are registered with the RegisterPrefix method.

The Create method uses the requestUriString parameter to create a Uri instance that it passes to the new WebRequest.

NoteNote:

This member outputs trace information when you enable network tracing in your application. For more information, see Network Tracing.

The following example uses Create to instantiate an HttpWebRequest instance. A string representing the target URL is used as the constructor parameter.

Visual Basic
Dim ourUri As New Uri(url)
' Create a 'WebRequest' object with the specified url. 

Dim myWebRequest As WebRequest = WebRequest.Create(url)

' Send the 'WebRequest' and wait for response.
Dim myWebResponse As WebResponse = myWebRequest.GetResponse()

' "ResponseUri" property is used to get the actual Uri from where the response was attained.
If ourUri.Equals(myWebResponse.ResponseUri) Then
    Console.WriteLine(ControlChars.Cr + "Request Url : {0} was not redirected", url)
Else
    Console.WriteLine(ControlChars.Cr + "Request Url : {0} was redirected to {1}", url, myWebResponse.ResponseUri)
End If 

' Release resources of response object.
myWebResponse.Close()

C#
            Uri ourUri = new Uri(url);            

            // Create a 'WebRequest' object with the specified url. 
            WebRequest myWebRequest = WebRequest.Create(url); 

            // Send the 'WebRequest' and wait for response.
            WebResponse myWebResponse = myWebRequest.GetResponse(); 
            
            // Use "ResponseUri" property to get the actual Uri from where the response was attained.
            if (ourUri.Equals(myWebResponse.ResponseUri))
                Console.WriteLine("\nRequest Url : {0} was not redirected",url);   
            else
                Console.WriteLine("\nRequest Url : {0} was redirected to {1}",url,myWebResponse.ResponseUri);   
            // Release resources of response object.
            myWebResponse.Close(); 
            
Visual C++
Uri^ ourUri = gcnew Uri( url );

// Create a 'WebRequest' object with the specified url.
WebRequest^ myWebRequest = WebRequest::Create( url );

// Send the 'WebRequest' and wait for response.
WebResponse^ myWebResponse = myWebRequest->GetResponse();

// Use "ResponseUri" property to get the actual Uri from where the response was attained.
if ( ourUri->Equals( myWebResponse->ResponseUri ) )
{
   Console::WriteLine( "\nRequest Url : {0} was not redirected", url );
}
else
{
   Console::WriteLine( "\nRequest Url : {0} was redirected to {1}", url, myWebResponse->ResponseUri );
}

// Release resources of response object.
myWebResponse->Close();

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 3.5, 2.0, 1.0
Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
GZIP content is ok      cheeso   |   Edit   |   Show History

In case you were wondering, WebClient handles GZIP encoded content.


  private static string GetPageMarkup(string uri)
{
string pageData = null;
using (WebClient client = new WebClient())
{
pageData = client.DownloadString(uri);
}
return pageData;
}




If you want to send a CookieContainer with the GET Request, you have to do smoething special:

      

class WebClientEx : WebClient
{
protected override WebRequest GetWebRequest(Uri address)
{
WebRequest request = base.GetWebRequest(address);
if (request is HttpWebRequest)
{
(request as HttpWebRequest).CookieContainer = PersistentCookies.GetCookieContainerForUrl(address);
}
return request;
}
}
  


class PersistentCookies
{
// to get persistent cookies for TinyPic
[DllImport("wininet.dll", CharSet=CharSet.Auto , SetLastError=true)]
private static extern bool InternetGetCookie (string url, string name, StringBuilder data, ref int dataSize);
  
private static string RetrieveIECookiesForUrl(string url)
{
StringBuilder cookieHeader = new StringBuilder(new String(' ', 256), 256);
int datasize = cookieHeader.Length;
if (!InternetGetCookie(url, null, cookieHeader, ref datasize))
{
if (datasize < 0)
return String.Empty;
cookieHeader = new StringBuilder(datasize); // resize with new datasize
InternetGetCookie(url, null, cookieHeader, ref datasize);
}
// result is like this: "KEY=Value; KEY2=what ever"
return cookieHeader.ToString();
}
            public static CookieContainer GetCookieContainerForUrl(string url)
{
return GetCookieContainerForUrl(new Uri(url));
}
            public static CookieContainer GetCookieContainerForUrl(Uri url)
{
CookieContainer container = new CookieContainer();
string cookieHeaders = RetrieveIECookiesForUrl(url.AbsoluteUri);
if (cookieHeaders.Length > 0)
{
try
{
container.SetCookies(url, cookieHeaders);
}
catch (CookieException) {}
}
return container;
}
}
  
private static string GetPageMarkup(string uri)
{
string pageData = null;
using (WebClientEx client = new WebClientEx())
{
pageData = client.DownloadString(uri);
}
return pageData;
}


Processing
Page view tracker