old_flsystem/类库/HttpHelper2.1/Helper/HttpCookieHelper.cs

136 lines
3.4 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using System;
using System.Collections.Generic;
using System.Net;
namespace CsharpHttpHelper.Helper
{
/// <summary>
/// Cookie操作帮助类 Copyrighthttp://www.httphelper.com/
/// </summary>
internal static class HttpCookieHelper
{
/// <summary>
/// 根据字符生成Cookie和精简串将排除path,expires,domain以及重复项
/// </summary>
/// <param name="strcookie">Cookie字符串</param>
/// <returns>精简串</returns>
internal static string GetSmallCookie(string strcookie)
{
if (string.IsNullOrWhiteSpace(strcookie))
{
return string.Empty;
}
List<string> list = new List<string>();
string[] array = strcookie.ToString().Split(new string[2]
{
",",
";"
}, StringSplitOptions.RemoveEmptyEntries);
string[] array2 = array;
foreach (string text in array2)
{
string text2 = text.ToLower().Trim().Replace("\r\n", string.Empty)
.Replace("\n", string.Empty);
if (!string.IsNullOrWhiteSpace(text2) && text2.Contains("=") && !text2.Contains("path=") && !text2.Contains("expires=") && !text2.Contains("domain=") && !list.Contains(text))
{
list.Add($"{text};");
}
}
return string.Join(";", list);
}
/// <summary>
/// 将字符串Cookie转为CookieCollection
/// </summary>
/// <param name="strcookie">Cookie字符串</param>
/// <returns>List-CookieItem</returns>
internal static CookieCollection StrCookieToCookieCollection(string strcookie)
{
if (string.IsNullOrWhiteSpace(strcookie))
{
return null;
}
CookieCollection cookieCollection = new CookieCollection();
strcookie = GetSmallCookie(strcookie);
string[] array = strcookie.ToString().Split(new string[1]
{
";"
}, StringSplitOptions.RemoveEmptyEntries);
string[] array2 = array;
foreach (string text in array2)
{
string[] array3 = text.ToString().Split(new string[1]
{
"="
}, StringSplitOptions.RemoveEmptyEntries);
if (array3.Length == 2)
{
cookieCollection.Add(new Cookie
{
Name = array3[0].Trim(),
Value = array3[1].Trim()
});
}
}
return cookieCollection;
}
/// <summary>
/// 将CookieCollection转为字符串Cookie
/// </summary>
/// <param name="cookie">Cookie字符串</param>
/// <returns>strcookie</returns>
internal static string CookieCollectionToStrCookie(CookieCollection cookie)
{
if (cookie == null)
{
return string.Empty;
}
string text = string.Empty;
foreach (Cookie item in cookie)
{
text += $"{item.Name}={item.Value};";
}
return text;
}
/// <summary>
/// 自动合并两个Cookie的值返回更新后结果
/// </summary>
/// <param name="cookie1">Cookie1</param>
/// <param name="cookie2">Cookie2</param>
/// <returns>返回更新后的Cookie</returns>
internal static string GetMergeCookie(string cookie1, string cookie2)
{
if (string.IsNullOrWhiteSpace(cookie1))
{
return cookie2;
}
if (string.IsNullOrWhiteSpace(cookie2))
{
return cookie1;
}
List<string> list = new List<string>();
string[] array = cookie1.ToString().Split(';');
string[] array2 = cookie2.ToString().Split(';');
string[] array3 = array;
foreach (string text in array3)
{
if (!list.Contains(text))
{
list.Add($"{text} ");
}
}
array3 = array2;
foreach (string text in array3)
{
if (!list.Contains(text))
{
list.Add($"{text}");
}
}
return string.Join(";", list);
}
}
}