separate encoding from content type values

This commit is contained in:
Luke Pulverenti 2017-10-22 19:27:09 -04:00
parent 4fb4a87ca0
commit c2361db772
6 changed files with 56 additions and 11 deletions

View File

@ -33,7 +33,7 @@ namespace Emby.Dlna.ContentDirectory
{ {
CancellationToken = cancellationToken, CancellationToken = cancellationToken,
UserAgent = "Emby", UserAgent = "Emby",
RequestContentType = "text/xml; charset=\"utf-8\"", RequestContentType = "text/xml",
LogErrorResponseBody = true, LogErrorResponseBody = true,
Url = request.ContentDirectoryUrl, Url = request.ContentDirectoryUrl,
BufferContent = false BufferContent = false

View File

@ -72,7 +72,10 @@ namespace Emby.Dlna.PlayTo
Url = url, Url = url,
UserAgent = USERAGENT, UserAgent = USERAGENT,
LogErrorResponseBody = true, LogErrorResponseBody = true,
BufferContent = false BufferContent = false,
// The periodic requests may keep some devices awake
LogRequestAsDebug = true
}; };
options.RequestHeaders["HOST"] = ip + ":" + port.ToString(_usCulture); options.RequestHeaders["HOST"] = ip + ":" + port.ToString(_usCulture);
@ -93,7 +96,10 @@ namespace Emby.Dlna.PlayTo
Url = url, Url = url,
UserAgent = USERAGENT, UserAgent = USERAGENT,
LogErrorResponseBody = true, LogErrorResponseBody = true,
BufferContent = false BufferContent = false,
// The periodic requests may keep some devices awake
LogRequestAsDebug = true
}; };
options.RequestHeaders["FriendlyName.DLNA.ORG"] = FriendlyName; options.RequestHeaders["FriendlyName.DLNA.ORG"] = FriendlyName;
@ -125,7 +131,10 @@ namespace Emby.Dlna.PlayTo
UserAgent = USERAGENT, UserAgent = USERAGENT,
LogRequest = logRequest || _config.GetDlnaConfiguration().EnableDebugLog, LogRequest = logRequest || _config.GetDlnaConfiguration().EnableDebugLog,
LogErrorResponseBody = true, LogErrorResponseBody = true,
BufferContent = false BufferContent = false,
// The periodic requests may keep some devices awake
LogRequestAsDebug = true
}; };
options.RequestHeaders["SOAPAction"] = soapAction; options.RequestHeaders["SOAPAction"] = soapAction;
@ -137,7 +146,8 @@ namespace Emby.Dlna.PlayTo
options.RequestHeaders["contentFeatures.dlna.org"] = header; options.RequestHeaders["contentFeatures.dlna.org"] = header;
} }
options.RequestContentType = "text/xml; charset=\"utf-8\""; options.RequestContentType = "text/xml";
options.RequestContentEncoding = Encoding.UTF8;
options.RequestContent = postData; options.RequestContent = postData;
return _httpClient.Post(options); return _httpClient.Post(options);

View File

@ -320,8 +320,6 @@ namespace Emby.Server.Implementations.HttpClientManager
private async Task<HttpResponseInfo> GetCachedResponse(string responseCachePath, TimeSpan cacheLength, string url) private async Task<HttpResponseInfo> GetCachedResponse(string responseCachePath, TimeSpan cacheLength, string url)
{ {
_logger.Info("Checking for cache file {0}", responseCachePath);
try try
{ {
if (_fileSystem.GetLastWriteTimeUtc(responseCachePath).Add(cacheLength) > DateTime.UtcNow) if (_fileSystem.GetLastWriteTimeUtc(responseCachePath).Add(cacheLength) > DateTime.UtcNow)
@ -402,7 +400,17 @@ namespace Emby.Server.Implementations.HttpClientManager
var bytes = options.RequestContentBytes ?? var bytes = options.RequestContentBytes ??
Encoding.UTF8.GetBytes(options.RequestContent ?? string.Empty); Encoding.UTF8.GetBytes(options.RequestContent ?? string.Empty);
httpWebRequest.ContentType = options.RequestContentType ?? "application/x-www-form-urlencoded"; var contentType = options.RequestContentType ?? "application/x-www-form-urlencoded";
if (options.RequestContentEncoding != null)
{
if (options.RequestContentEncoding.Equals(Encoding.UTF8))
{
contentType = contentType.TrimEnd(';') + "; charset=\"utf-8\"";
}
}
httpWebRequest.ContentType = contentType;
httpWebRequest.ContentLength = bytes.Length; httpWebRequest.ContentLength = bytes.Length;
(await httpWebRequest.GetRequestStreamAsync().ConfigureAwait(false)).Write(bytes, 0, bytes.Length); (await httpWebRequest.GetRequestStreamAsync().ConfigureAwait(false)).Write(bytes, 0, bytes.Length);
@ -429,9 +437,16 @@ namespace Emby.Server.Implementations.HttpClientManager
} }
if (options.LogRequest) if (options.LogRequest)
{
if (options.LogRequestAsDebug)
{
_logger.Debug("HttpClientManager {0}: {1}", httpMethod.ToUpper(), options.Url);
}
else
{ {
_logger.Info("HttpClientManager {0}: {1}", httpMethod.ToUpper(), options.Url); _logger.Info("HttpClientManager {0}: {1}", httpMethod.ToUpper(), options.Url);
} }
}
try try
{ {
@ -596,9 +611,16 @@ namespace Emby.Server.Implementations.HttpClientManager
options.Progress.Report(0); options.Progress.Report(0);
if (options.LogRequest) if (options.LogRequest)
{
if (options.LogRequestAsDebug)
{
_logger.Debug("HttpClientManager.GetTempFileResponse url: {0}", options.Url);
}
else
{ {
_logger.Info("HttpClientManager.GetTempFileResponse url: {0}", options.Url); _logger.Info("HttpClientManager.GetTempFileResponse url: {0}", options.Url);
} }
}
var client = GetHttpClient(GetHostFromUrl(options.Url), options.EnableHttpCompression); var client = GetHttpClient(GetHostFromUrl(options.Url), options.EnableHttpCompression);

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using System.Threading; using System.Threading;
using System.Text;
namespace MediaBrowser.Common.Net namespace MediaBrowser.Common.Net
{ {
@ -90,6 +91,7 @@ namespace MediaBrowser.Common.Net
public bool BufferContent { get; set; } public bool BufferContent { get; set; }
public bool LogRequest { get; set; } public bool LogRequest { get; set; }
public bool LogRequestAsDebug { get; set; }
public bool LogErrors { get; set; } public bool LogErrors { get; set; }
public bool LogErrorResponseBody { get; set; } public bool LogErrorResponseBody { get; set; }
@ -102,6 +104,8 @@ namespace MediaBrowser.Common.Net
public bool PreferIpv4 { get; set; } public bool PreferIpv4 { get; set; }
public bool EnableDefaultUserAgent { get; set; } public bool EnableDefaultUserAgent { get; set; }
public Encoding RequestContentEncoding { get; set; }
private string GetHeaderValue(string name) private string GetHeaderValue(string name)
{ {
string value; string value;

View File

@ -64,6 +64,10 @@ namespace Mono.Nat.Upnp
{ {
var req = new HttpRequestOptions(); var req = new HttpRequestOptions();
// The periodic request logging may keep some devices awake
req.LogRequestAsDebug = true;
req.LogErrors = false;
req.Url = "http://" + this.hostAddress.ToString() + this.servicesDescriptionUrl; req.Url = "http://" + this.hostAddress.ToString() + this.servicesDescriptionUrl;
req.RequestHeaders.Add("ACCEPT-LANGUAGE", "en"); req.RequestHeaders.Add("ACCEPT-LANGUAGE", "en");

View File

@ -52,9 +52,14 @@ namespace Mono.Nat.Upnp
var req = new HttpRequestOptions(); var req = new HttpRequestOptions();
req.LogErrors = false; req.LogErrors = false;
// The periodic request logging may keep some devices awake
req.LogRequestAsDebug = true;
req.Url = ss; req.Url = ss;
req.EnableKeepAlive = false; req.EnableKeepAlive = false;
req.RequestContentType = "text/xml; charset=\"utf-8\""; req.RequestContentType = "text/xml";
req.RequestContentEncoding = Encoding.UTF8;
req.RequestHeaders.Add("SOAPACTION", "\"" + device.ServiceType + "#" + upnpMethod + "\""); req.RequestHeaders.Add("SOAPACTION", "\"" + device.ServiceType + "#" + upnpMethod + "\"");
string bodyString = "<s:Envelope " string bodyString = "<s:Envelope "