private byte[] BuildPacket() { byte[] buffer; if (DataBuffer == null) { DataBuffer = new Byte[0]; } if (Version == "1.0") { if ((Method == "") && (ResponseCode == -1)) { return(DataBuffer); } } UTF8Encoding UTF8 = new UTF8Encoding(); String sbuf; IDictionaryEnumerator en = TheHeaders.GetEnumerator(); en.Reset(); if (Method != "") { if (Version != "") { sbuf = Method + " " + EscapeString(MethodData) + " HTTP/" + Version + "\r\n"; } else { sbuf = Method + " " + EscapeString(MethodData) + "\r\n"; } } else { sbuf = "HTTP/" + Version + " " + ResponseCode.ToString() + " " + ResponseData + "\r\n"; } while (en.MoveNext()) { if (en.Value != null && ((String)en.Key != "CONTENT-LENGTH" || OverrideContentLength == true)) { if (en.Value.GetType() == typeof(string)) { sbuf += (String)en.Key + ": " + (String)en.Value + "\r\n"; } else { sbuf += (String)en.Key + ":"; foreach (string v in (ArrayList)en.Value) { sbuf += (" " + v + "\r\n"); } } } } if (StatusCode == -1 && DontShowContentLength == false) { sbuf += "Content-Length: " + DataBuffer.Length.ToString() + "\r\n"; } else if (Version != "1.0" && Version != "0.9" && Version != "" && DontShowContentLength == false) { if (OverrideContentLength == false) { sbuf += "Content-Length: " + DataBuffer.Length.ToString() + "\r\n"; } } sbuf += "\r\n"; buffer = new byte[UTF8.GetByteCount(sbuf) + DataBuffer.Length]; UTF8.GetBytes(sbuf, 0, sbuf.Length, buffer, 0); Array.Copy(DataBuffer, 0, buffer, buffer.Length - DataBuffer.Length, DataBuffer.Length); return(buffer); }
public IDictionaryEnumerator GetHeaderEnumerator() { return(TheHeaders.GetEnumerator()); }