private void HTTPHeaderParse(string Header)
{
#region HTTP HEADER REQUEST & RESPONSE
HTTPHeaderField HHField;
string HTTPfield = null;
int Index;
string buffer;
for (int f = (int) HTTPHeaderField.Accept; f < (int) HTTPHeaderField.HEADER_VALUE_MAX_PLUS_ONE; f++)
{
HHField = (HTTPHeaderField) f;
HTTPfield = null;
if (!HeaderFieldToStrings.TryGetValue(HHField, out HTTPfield) || HTTPField == null)
{
HTTPfield = "\n" + HHField.ToString().Replace('_', '-') + ": ";
HeaderFieldToStrings.Add(HHField, HTTPfield);
}
// Si le champ n'est pas pr?sent dans la requ?te, on passe au champ suivant
Index = Header.IndexOf(HTTPfield, StringComparison.OrdinalIgnoreCase);
if (Index == -1)
continue;
buffer = Header.Substring(Index + HTTPfield.Length);
Index = buffer.IndexOf("\r\n", StringComparison.OrdinalIgnoreCase);
if (Index == -1)
m_StrHTTPField[HHField] = buffer.Trim();
else
m_StrHTTPField[HHField] = buffer.Substring(0, Index).Trim();
if (m_StrHTTPField[HHField].Length == 0)
{
XmlRpcUtil.log(XmlRpcUtil.XMLRPC_LOG_LEVEL.WARNING, "HTTP HEADER: field \"{0}\" has a length of 0", HHField.ToString());
}
XmlRpcUtil.log(XmlRpcUtil.XMLRPC_LOG_LEVEL.DEBUG, "HTTP HEADER: Index={0} | champ={1} = {2}", f, HTTPfield.Substring(1), m_StrHTTPField[HHField]);
}
#endregion
}