private byte[] ConvertRequestMessage(byte[] rawData) { byte[] fastinfosetData = null; byte[] compressedData = null; //Fast Info Set if (isFastinfoset) { string message = Encoding.UTF8.GetString(rawData); fastinfosetData = FastinfosetUtil.GenerateFastInfoSet(message); } else { fastinfosetData = rawData; } //Gzip Compress if (isGzip) { compressedData = GzipUtil.Compress(fastinfosetData); } else { compressedData = fastinfosetData; } return(compressedData); }
public string GetContent() { byte[] decompressedData = null; decompressedData = GetRawData(); if (this.client != null && !Connected) { this.client.Close(); } if (HasAttachments) { if (contentData == null) { BuildAttachments(); } decompressedData = contentData; } if (decompressedData == null || decompressedData.Length == 0) { return(string.Empty); } if (commonHeaders.Keys.Contains("Content-Type") && commonHeaders["Content-Type"].Contains("application/fastinfoset")) { return(FastinfosetUtil.GetFastInfoSet(decompressedData)); } else { return(Encoding.UTF8.GetString(decompressedData)); } }
/// <summary> /// /// </summary> /// <param name="message"></param> public void Send(string message) { byte[] rawData = Encoding.UTF8.GetBytes(message); byte[] fastinfosetData = null; byte[] compressedData = null; //Fast Info Set if (httpRequest.CommonHeaders.Keys.Contains("Content-Type") && httpRequest.CommonHeaders["Content-Type"].Contains("application/fastinfoset")) { fastinfosetData = FastinfosetUtil.GenerateFastInfoSet(message); } else { fastinfosetData = rawData; } //Gzip Compress if (httpRequest.CommonHeaders.Keys.Contains("Accept-Encoding") && httpRequest.CommonHeaders["Accept-Encoding"].Equals("gzip")) { compressedData = GzipUtil.Compress(fastinfosetData); } else { compressedData = fastinfosetData; } httpRequest.CommonHeaders["Content-Length"] = compressedData.Length.ToString(); httpRequest.CommonHeaders["Pragma"] = "requestnum=\"" + requestSeq + "\""; requestSeq++; //Conbine the Header and message body byte[] headerData = Encoding.UTF8.GetBytes(httpRequest.GetHeaderString()); Collection <byte> totalData = new Collection <byte>(); for (int i = 0; i < headerData.Length; i++) { totalData.Add(headerData[i]); } for (int i = 0; i < compressedData.Length; i++) { totalData.Add(compressedData[i]); } byte[] totalBytes = totalData.ToArray(); Stream requestStream = httpRequest.GetRequestStream(new IPEndPoint(Dns.GetHostEntry(hostAddress).AddressList[0], port)); requestStream.Write(totalBytes, 0, totalBytes.Length); }