public bool isGZIPSupported()
{
return (Requests != null && Requests.ContainsKey("Accept-Encoding") && Requests["Accept-Encoding"].Contains("gzip")) ? true : false;
}
/// <summary>
/// 返回查询strin值,返回“”如果不存在
/// </summary>
/// <param name="key"></param>
/// <returns></returns>
public string GetQueryStringValue(string key)
{
if (UrlParameters == null || UrlParameters.Count == 0 || !UrlParameters.ContainsKey(key)) return string.Empty;
return UrlParameters[key];
}
}
3.2.3 HTTP Response类
Http服务下的Response模块,在RFC2616中说明了, 接收和翻译一个请求消息后,服务器发出一个HTTP响应消息。所以需要一个HTTP Response,它的主要功能是接受HttpRequest以及翻译HttpRequest,并把响应发回给Web浏览器。
代码分析:
public class HttpResponse : ApplicationResponse
{
public HttpResponse(byte[] response,ApplicationRequest request)
: base(request)
{
this.ResponseData = response;
}
public override byte[] ElaborateData()
{
return base.ElaborateData();
}
}
3.2.4 Http辅助功能类
本次设计的Http服务器,它里面包含了各种各样的文件,有用来测试的Html文件,css样式表文件,Html里面包含的javascript,登录时浏览器上显示的图片文件,以及xml文件等等,所以需要一个类来解析各个文件,Http服务下的HttpHelper类,它主要是帮助Web服务器要能够解析windows下面各种类型的文件,图片格式ICO、GIF、G、EG、PNG,还需要支持解析各种超文本标记语言,如htm、html、xhtml、dhtml,还有脚本语言javascript,样式表css,可扩展标记语言xml。
代码分析:
public class HttpHelper
{
/// <summary>
/// 返回true如果资源是静态的资源组的一部分
/// </summary>
/// <param name="resource">resource name</param>
/// <returns></returns>
public static bool IsStaticResource(string resource)
{
return Regex.IsMatch(resource, @"(.*?)\.(ico|css|gif|jpg|jpeg|png|js|xml)$"); HTTP服务器软件系统的设计与实现(17):http://www.youerw.com/jisuanji/lunwen_3170.html