Microsoft is changing the Api to get HTTP content from version to version. Also the type of possible authentication mechanism behind is changing all the time. So in Universal App for Windows 10, Windows Phone or Windows Store 8 or 8.1. the underlying platform for HTTP access is different in several areas.
The System.Net.HttpClient from NuGet that is using the different underlying platforms and therefore is making the same problems. To not being totally confused, it is better not to use System.Net and always use the underlying platform directly instead
Windows.Web.HttpClient or HttpWebRequest
It is better to use one these clients.
- Windows Phone 8: HttpWebRequest
- Windows 10 and 8.1 should use Windows.Web.HttpClient
Known problems and bugs in Windows.Web.HttpClient or the old HttpWebRequest:
There are some known bugs available but for a lot of them there are work arounds you can use:
- Digest Relative Path bug: http://stackoverflow.com/questions/594323/implement-digest-authentication-via-httpwebrequest-in-c-sharp
- PasswordCredential: The credential is cached and you cannot release the cache. http://stackoverflow.com/questions/30731424/how-to-stop-credential-caching-on-windows-web-http-httpclient
If you have any problems by using the included authentication methods (for example: PasswordCredential) you “just” need to do the authentication by your self creating and adding specific request headers.
Hereinafter is a sample showing how these header entries must be used if you need Digest authentication. The sample uses the old HttpWebRequest but you can rewrite the sample to use Windows.Web.HttpClient easily.