private void HTTPHeaderParse(string Header) { #region HTTP HEADER REQUEST & RESPONSE HTTPHeaderField HHField; string HTTPfield, buffer; int Index; foreach (int IndexHTTPfield in Enum.GetValues(typeof(HTTPHeaderField))) { HHField = (HTTPHeaderField)IndexHTTPfield; HTTPfield = "\n" + HHField.ToString().Replace('_', '-') + ": "; //Ajout de \n devant pour éviter les doublons entre cookie et set_cookie // Si le champ n'est pas présent dans la requête, on passe au champ suivant Index = Header.IndexOf(HTTPfield); if (Index == -1) { continue; } buffer = Header.Substring(Index + HTTPfield.Length); Index = buffer.IndexOf("\r\n"); if (Index == -1) { m_StrHTTPField[IndexHTTPfield] = buffer.Trim(); } else { m_StrHTTPField[IndexHTTPfield] = buffer.Substring(0, Index).Trim(); } } #endregion }
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 }
private void HTTPHeaderParse(string Header) { #region HTTP HEADER REQUEST & RESPONSE HTTPHeaderField HHField; string HTTPfield, buffer; int Index; foreach (int IndexHTTPfield in Enum.GetValues(typeof(HTTPHeaderField))) { HHField = (HTTPHeaderField)IndexHTTPfield; HTTPfield = "\n" + HHField.ToString().Replace('_', '-') + ": "; //Ajout de \n devant pour éviter les doublons entre cookie et set_cookie // Si le champ n'est pas présent dans la requête, on passe au champ suivant Index = Header.IndexOf(HTTPfield); if (Index == -1) { continue; } buffer = Header.Substring(Index + HTTPfield.Length); Index = buffer.IndexOf("\r\n"); if (Index == -1) { m_StrHTTPField[IndexHTTPfield] = buffer.Trim(); } else { m_StrHTTPField[IndexHTTPfield] = buffer.Substring(0, Index).Trim(); } Console.WriteLine("Index = " + IndexHTTPfield + " | champ = " + HTTPfield.Substring(1) + " " + m_StrHTTPField[IndexHTTPfield]); } // Affichage de tout les champs /*for (int j = 0; j < m_StrHTTPField.Length; j++) * { * HHField = (HTTPHeaderField)j; * Console.WriteLine("m_StrHTTPField[" + j + "]; " + HHField + " = " + m_StrHTTPField[j]); * } */ #endregion }
private void parseHeader(string header) { 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); } index = IndexOfNoCase(header, HTTPfield); if (index == -1) { continue; } buffer = header.Substring(index + HTTPfield.Length); index = buffer.IndexOf("\r\n"); if (index == -1) { m_StrHTTPField[HHField] = buffer.Trim(); } else { m_StrHTTPField[HHField] = buffer.Substring(0, index).Trim(); } if (m_StrHTTPField[HHField].Length == 0) { Console.WriteLine("HTTP HEADER: field \"{0}\" has a length of 0", HHField.ToString()); } Debug.WriteLine("HTTP HEADER: Index={0} | champ={1} = {2}", f, HTTPfield.Substring(1), m_StrHTTPField[HHField]); } }