优化HTTP重定向
This commit is contained in:
parent
799820fa30
commit
6a72a807ad
|
@ -52,7 +52,7 @@ namespace N_m3u8DL_RE.Common.Util
|
||||||
Logger.Debug(webRequest.Headers.ToString());
|
Logger.Debug(webRequest.Headers.ToString());
|
||||||
//手动处理跳转,以免自定义Headers丢失
|
//手动处理跳转,以免自定义Headers丢失
|
||||||
var webResponse = await AppHttpClient.SendAsync(webRequest, HttpCompletionOption.ResponseHeadersRead);
|
var webResponse = await AppHttpClient.SendAsync(webRequest, HttpCompletionOption.ResponseHeadersRead);
|
||||||
if (webResponse.StatusCode == HttpStatusCode.Found || webResponse.StatusCode == HttpStatusCode.Moved || webResponse.StatusCode == HttpStatusCode.SeeOther)
|
if (((int)webResponse.StatusCode).ToString().StartsWith("30"))
|
||||||
{
|
{
|
||||||
HttpResponseHeaders respHeaders = webResponse.Headers;
|
HttpResponseHeaders respHeaders = webResponse.Headers;
|
||||||
Logger.Debug(respHeaders.ToString());
|
Logger.Debug(respHeaders.ToString());
|
||||||
|
|
|
@ -58,7 +58,7 @@ namespace N_m3u8DL_RE.Util
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using var response = await AppHttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationTokenSource.Token);
|
using var response = await AppHttpClient.SendAsync(request, HttpCompletionOption.ResponseHeadersRead, cancellationTokenSource.Token);
|
||||||
if (response.StatusCode == HttpStatusCode.Found || response.StatusCode == HttpStatusCode.Moved || response.StatusCode == HttpStatusCode.SeeOther)
|
if (((int)response.StatusCode).ToString().StartsWith("30"))
|
||||||
{
|
{
|
||||||
HttpResponseHeaders respHeaders = response.Headers;
|
HttpResponseHeaders respHeaders = response.Headers;
|
||||||
Logger.Debug(respHeaders.ToString());
|
Logger.Debug(respHeaders.ToString());
|
||||||
|
@ -86,6 +86,13 @@ namespace N_m3u8DL_RE.Util
|
||||||
using var responseStream = await response.Content.ReadAsStreamAsync(cancellationTokenSource.Token);
|
using var responseStream = await response.Content.ReadAsStreamAsync(cancellationTokenSource.Token);
|
||||||
var buffer = new byte[16 * 1024];
|
var buffer = new byte[16 * 1024];
|
||||||
var size = 0;
|
var size = 0;
|
||||||
|
|
||||||
|
//检测imageHeader
|
||||||
|
size = await responseStream.ReadAsync(buffer, cancellationTokenSource.Token);
|
||||||
|
speedContainer.Add(size);
|
||||||
|
await stream.WriteAsync(buffer, 0, size);
|
||||||
|
bool imageHeader = ImageHeaderUtil.IsImageHeader(buffer);
|
||||||
|
|
||||||
while ((size = await responseStream.ReadAsync(buffer, cancellationTokenSource.Token)) > 0)
|
while ((size = await responseStream.ReadAsync(buffer, cancellationTokenSource.Token)) > 0)
|
||||||
{
|
{
|
||||||
speedContainer.Add(size);
|
speedContainer.Add(size);
|
||||||
|
@ -96,7 +103,8 @@ namespace N_m3u8DL_RE.Util
|
||||||
{
|
{
|
||||||
ActualContentLength = stream.Length,
|
ActualContentLength = stream.Length,
|
||||||
RespContentLength = contentLength,
|
RespContentLength = contentLength,
|
||||||
ActualFilePath = path
|
ActualFilePath = path,
|
||||||
|
ImageHeader= imageHeader
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
catch (OperationCanceledException oce) when (oce.CancellationToken == cancellationTokenSource.Token)
|
catch (OperationCanceledException oce) when (oce.CancellationToken == cancellationTokenSource.Token)
|
||||||
|
|
Loading…
Reference in New Issue