diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-27 13:00:49 -0500 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2014-02-27 13:00:49 -0500 |
| commit | f2261a669e08da703b981b9f587d0075af89c32f (patch) | |
| tree | 3c3f065f33c5c8659cd47f3e43eb1281dfa722b7 /MediaBrowser.Common.Implementations/HttpClientManager | |
| parent | f0f897e97e45a489f1c02e1d81dc838a4ab5bd13 (diff) | |
fixed dlna headers
Diffstat (limited to 'MediaBrowser.Common.Implementations/HttpClientManager')
| -rw-r--r-- | MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs | 66 |
1 files changed, 23 insertions, 43 deletions
diff --git a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs index 3dcf044f7..ca9214b54 100644 --- a/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs +++ b/MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs @@ -105,48 +105,12 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager return client; } - private WebRequest GetMonoRequest(HttpRequestOptions options, string method, bool enableHttpCompression) - { - var request = (HttpWebRequest)WebRequest.Create(options.Url); - - if (!string.IsNullOrEmpty(options.AcceptHeader)) - { - request.Accept = options.AcceptHeader; - } - - request.AutomaticDecompression = enableHttpCompression ? DecompressionMethods.Deflate : DecompressionMethods.None; - - request.CachePolicy = options.CachePolicy == Net.HttpRequestCachePolicy.None ? - new RequestCachePolicy(RequestCacheLevel.BypassCache) : - new RequestCachePolicy(RequestCacheLevel.Revalidate); - - request.ConnectionGroupName = GetHostFromUrl(options.Url); - request.KeepAlive = true; - request.Method = method; - request.Pipelined = true; - request.Timeout = 20000; - - if (!string.IsNullOrEmpty(options.UserAgent)) - { - request.UserAgent = options.UserAgent; - } - - return request; - } - private PropertyInfo _httpBehaviorPropertyInfo; private WebRequest GetRequest(HttpRequestOptions options, string method, bool enableHttpCompression) { -#if __MonoCS__ - return GetMonoRequest(options, method, enableHttpCompression); -#endif + var request = (HttpWebRequest)WebRequest.Create(options.Url); - var request = HttpWebRequest.CreateHttp(options.Url); - - if (!string.IsNullOrEmpty(options.AcceptHeader)) - { - request.Accept = options.AcceptHeader; - } + AddRequestHeaders(request, options); request.AutomaticDecompression = enableHttpCompression ? DecompressionMethods.Deflate : DecompressionMethods.None; @@ -160,11 +124,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager request.Pipelined = true; request.Timeout = 20000; - if (!string.IsNullOrEmpty(options.UserAgent)) - { - request.UserAgent = options.UserAgent; - } - +#if !__MonoCS__ // This is a hack to prevent KeepAlive from getting disabled internally by the HttpWebRequest // May need to remove this for mono var sp = request.ServicePoint; @@ -173,10 +133,30 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager _httpBehaviorPropertyInfo = sp.GetType().GetProperty("HttpBehaviour", BindingFlags.Instance | BindingFlags.NonPublic); } _httpBehaviorPropertyInfo.SetValue(sp, (byte)0, null); +#endif return request; } + private void AddRequestHeaders(HttpWebRequest request, HttpRequestOptions options) + { + foreach (var header in options.RequestHeaders.ToList()) + { + if (string.Equals(header.Key, "Accept", StringComparison.OrdinalIgnoreCase)) + { + request.Accept = header.Value; + } + else if (string.Equals(header.Key, "User-Agent", StringComparison.OrdinalIgnoreCase)) + { + request.UserAgent = header.Value; + } + else + { + request.Headers.Set(header.Key, header.Value); + } + } + } + /// <summary> /// Gets the response internal. /// </summary> |
