How to secure System.Net.Http.HttpClient connections (Windows Store apps using C#/VB and XAML)
[This article is for Windows 8.x and Windows Phone 8.x developers writing Windows Runtime apps. If you’re developing for Windows 10, see the latest documentation]
Secure System.Net.Http.HttpClient connections to a web service.
Note The System.Net.Http and System.Net.Http.Headers namespace might not be available in future versions of Windows for use by Windows Store apps. Starting with Windows 8.1 and Windows Server 2012 R2, use Windows.Web.Http.HttpClient in the Windows.Web.Http namespace and the related Windows.Web.Http.Headers and Windows.Web.Http.Filters namespaces instead for Windows Store apps.
What you need to know
Technologies
Prerequisites
The following example in this topic is provided in C# using the .NET Framework 4.5. A basic understanding of HTTP requests as detailed in RFC 2616 is required.
To make HTTP requests in a Windows Store app using JavaScript and HTML, see Connecting to a web service (HTML).
Use the https: URI scheme
The HTTP Protocol defines two URI schemes:
- http - Used for unencrypted connections.
- https - Used for secure connections that should be encrypted. This option also uses digital certificates and certificate authorities to verify that the server is who it claims to be.
To encrypt your connection, use the https: URI scheme. For example:
// Create a New HttpClient object.
HttpClient client = new HttpClient();
// use https: for the URI scheme
HttpResponseMessage response = await client.GetAsync("https://www.contoso.com/");
Remarks
In this topic we reviewed how to secure System.Net.Http.HttpClient connections.
The following example changes one line in the code for the System.Net.Http.HttpClient sample to secure the connection and verify the server.
HttpClient secure connection sample
HttpClient client = new HttpClient();
try
{
HttpResponseMessage response = await client.GetAsync("https://www.contoso.com/");
response.EnsureSuccessStatusCode();
string responseBody = await response.Content.ReadAsStringAsync();
// Above three lines can be replaced with new helper method in following line
// string body = await client.GetStringAsync(uri);
httpClientSecure.DisplayStatus(responseBody);
catch(HttpRequestException e)
{
httpClientSecure.DisplayStatus("Exception caught"+e.Message);
}
catch (Exception ex)
{
httpClientSecure.DisplayStatus(ex.ToString);
}
Related topics
Other resources
How to configure network capabilities
How to connect using System.Net.Http.HttpClient
How to use System.Net.Http.HttpClient handlers
Reference
Samples